Python之openpyxl模块

工作中经常会用到excel表格,在python中,我们可以利用openpyxl很方便地操作它。本文先以两个示例快速介绍openpyxl的基本用法。

示例1

展示了创建新的工作薄、激活默认表单、以行的形式赋值并保存文件。

from openpyxl import Workbook

wb = Workbook()
# 激活默认表单
ws = wb.active
# 以行为单位输入
row = ["A1", "B1", "C1"]
ws.append(row)
# 保存文件
wb.save("1.xlsx")

此时会得到名为"1.xlsx"的excel文件,该excel文件中只有一个默认表单,默认表单的第一行被赋值了。

示例2

展示了加载工作薄、创建新表单、以单元格的形式赋值并保存文件。

from openpyxl import load_workbook

# 加载文件
wb = load_workbook("1.xlsx")
# 创建新的表单
ws = wb.create_sheet("my sheet")
# 给A3单元格赋值
ws['A3'] = 10
# 保存文件
wb.save("2.xlsx")

此时会得到名为"2.xlsx"的excel文件,该excel文件含有默认和新建的两个表单,其中新建的表单中A3单元格被赋值了。

通过上述两个示例,对openpyxl有了大概的了解后。下面将开始介绍openpyxl更多的基本用法。

修改表单名

操作指定名字的表单

ws1 = wb["new title"]
ws1['A3'] = 10

遍历工作薄中的表单名

for sheet in wb:
    print(sheet.title)

复制表单

source = wb.active
target = wb.copy_worksheet(source)

给单元格赋值

# 方法1
ws['A4'] = 10
# 方法2
ws.cell(row=4, column=1, value=10)

使用datetime格式赋值

import datetime
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
# set date using a Python datetime
ws['A1'] = datetime.datetime(2010, 7, 21)
print(ws['A1'].number_format)
print(ws['A1'].value)

运行结果如下:

yyyy-mm-dd h:mm:ss
2010-07-21 00:00:00

使用公式赋值

from openpyxl import Workbook
wb = Workbook()
ws = wb.active
# add a simple formula
ws["A1"] = "=SUM(1, 1)"
wb.save("formula.xlsx")

合并/取消合并单元格

from openpyxl.workbook import Workbook

wb = Workbook()
ws = wb.active
# 方法1
ws.merge_cells('A2:D2')
ws.unmerge_cells('A2:D2')
# 方法2
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)

wb.save("merge.xlsx")

添加图表

from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference

wb = Workbook()
ws = wb.active
for i in range(10):
    ws.append([i])

values = Reference(ws, min_col=1, min_row=1, max_col=1, max_row=10)
chart = BarChart()
chart.add_data(values)
ws.add_chart(chart, "E15")
wb.save("SampleChart.xlsx")

除了上述常见用法外,openpyxl更多更强大的功能还需移步官方文档去了解。