写入数据到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')