社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python-openpyxl教程(二)

庄周幻梦 • 4 年前 • 587 次点击  

简单使用

前文:


写工作薄

from openpyxl import Workbook
from openpyxl.utils import get_column_letter

wb = Workbook()  # 创建一个Workbook对象

dest_filename = 'empty_book.xlsx'  # 文件名称

ws1 = wb.active  # 将默认的sheet指定赋值给ws1
ws1.title = "range names"  # 将ws1 sheet的标题修改为 "range names"

# 创建了一个40*600的工作表, 每一行的值为range(600)
for row in range(1, 40):
    ws1.append(range(600))  # Workbook.append:在当前工作表的底部追加一组数值

ws2 = wb.create_sheet(title="Pi")  # 创建一个新的工作表"Pi", 赋值给ws2

ws2['F5'] = 3.14  # ws2的F5单元格写入数值3.14

ws3 = wb.create_sheet(title="Data")  # 创建一个新的工作表"Data", 赋值给ws3

# 创建了一个10*27的工作表, 从AA10位置开始至BA20单元格, 每个单元格写入值为当前列索引的字母.
for row in range(10, 20):
    for col in range(27, 54):
        # cell.get_column_letter: 将列索引转换为列字母
        _ = ws3.cell(column=col, row=row, value="{0}".format(get_column_letter(col)))

print(ws3['AA10'].value)  # AA列索引转为字母AA

wb.save(filename=dest_filename)  # 保存为文件

阅读现有的工作表

from openpyxl import load_workbook

wb = load_workbook(filename='empty_book.xlsx')
sheet_ranges = wb['range names']
print(sheet_ranges['D18'].value)  # 3
\color {skyblue} {!笔记}
在load_workbook中可以使用几个标志。
- data_only 控制带有公式的单元格是否具有公式(默认值)或Excel上次读取工作表时存储的值。
- *
keep_vba* 控制是否保留任何Visual Basic 元素(默认)。如果保留它们,则他们仍不可编辑。
\color {red} {!警告}
openpyxl当前无法读取Excel文件中的所有可能项目,因此如果使用相同的名称打开并保存图像和图表,则这些图像和图表将从现有文件中丢失。

使用数字格式

import datetime
from openpyxl import Workbook

wb = Workbook()
ws = wb.active()
ws['A1'] = datetime.datetime(2010, 7, 21)
ws['A1'].number_format  # ‘yyyy-mm-dd h:mm:ss’

使用公式

from openpyxl import Workbook

wb = Workbook()
ws = wb.active
ws['A1'] = "=SUM(1,1)"
wb.save('formula.xlsx')
\color {red} {!警告}
注意,您必须为函数使用英文名称,并且函数参数必须用逗号分隔,而不能使用其他标点符号分隔(例如分号)。

openpyxl 从不评估公式,但是可以检查公式的名称

from openpyxl.utils import FORMULAE

"HEX2DEC" in FORMULAE  # True

如果您尝试使用未知的公式,这可能是因为您使用的是初始规范中未包含的公式。此类公式必须以 _xlfn. 为前缀来工作。

合并/取消合并单元格

合并单元格时,除左上角以外的所有单元格都将从工作表中 删除 。为了携带合并单元格的边界信息,将合并单元格的边界单元格创建为MergeCells,其值始终为None。

from openpyxl.workbook import Workbook

wb = Workbook()
ws = wb.active

ws.merge_cells("A2:D2")
ws.unmerge_cells("A2:D2")

ws.merge_cells(start_row=3, start_column=1, end_row=4, end_column=4)
ws.unmerge_cells(start_row=3, start_column=1, end_row=4, end_column=4)

插入图像

from openpyxl import Workbook
from openpyxl.drawing.image import Image

wb = Workbook()
ws = wb.active
ws['A1'] = 'You should see three logos below'

# 创建一个图片对象
img = Image('logo.png')

# 添加到工作表并且锚定到下一个单元格
ws.add_image(img, 'A1')
wb.save('logo.xlsx')

折叠(轮廓)[组合]

import openpyxl

wb = openpyxl.Workbook()
ws = wb.create_sheet()
ws.column_dimensions.group('A', 'D', hidden=True)
ws.row_dimensions.group(1, 10, hidden=True)
wb.save('group.xlsx')

来源: https://openpyxl.readthedocs.io/en/stable/usage.html

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/110770
 
587 次点击