简单用例

写入数据到workbook

from openpyxl import Workbook
from openpyxl.utils import get_column_letter

wb = Workbook()
dest_filename = 'empty_book.xlsx'
ws1 = wb.active
ws1.title = "range names"

for row in range(1, 40):
    ws1.append(range(600))

ws2 = wb.create_sheet(title="Pi")
ws2['F5'] = 3.14
ws3 = wb.create_sheet(title="Data")
for row in range(10, 20): for col in range(27, 54): _ = ws3.cell(column=col, row=row, value="{0}".format(get_column_letter(col))) print(ws3['AA10'].value) #输出:AA wb.save(filename = dest_filename)

读取workbook

from openpyxl import load_workbook

wb = load_workbook(filename = 'empty_book.xlsx')
sheet_ranges = wb['range names']
print(sheet_ranges['D18'].value)  #输出:3

  注意:openpyxl当前不读取excel文件中所有可能的项目,因此如果用相同的名称打开和保存现有文件,图像和图表将丢失

使用数字格式

import datetime
from openpyxl import Workbook

wb = Workbook()
ws = wb.active
ws['A1'] = datetime.datetime(2010, 7, 21) # set date using a Python datetime
print(ws['A1'].number_format)  #输出:'yyyy-mm-dd h:mm:ss'

使用函数

from openpyxl import Workbook

wb = Workbook()
ws = wb.active
ws["A1"] = "=SUM(1, 1)" # 在单元格A1追加函数SUM
wb.save("formula.xlsx")

函数必须使用英文名称,函数参数之间必须用逗号分隔,不能使用分号等其他标点符号
openpyxl不会编译公式,但会检查公式的名称
如果尝试使用未知的公式,可能是因为使用的公式未包含在初始规范中。此类公式必须加上前缀才能工作

合并及取消合并单元格

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=2, start_column=1, end_row=4, end_column=4)
ws.unmerge_cells(start_row=2, start_column=1, end_row=4, end_column=4)

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

插入图片

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

wb = Workbook()
ws = wb.active
img = Image('01.png') #读取图片
ws.add_image(img, 'A1') #将图片追加至单元格A1
wb.save('logo.xlsx')

单元格分组

import openpyxl
wb = openpyxl.Workbook()
ws = wb.create_sheet()
ws.column_dimensions.group('A','D', hidden=True) #将A列到D列进行分组,并且隐藏
ws.row_dimensions.group(1,10, hidden=True) #将行1到行10进行分组,并且隐藏
wb.save('group.xlsx')
原文地址:https://www.cnblogs.com/shiliye/p/11548268.html