工作中经常会用到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更多的基本用法。
修改表单名
ws.title = "new title"
操作指定名字的表单
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更多更强大的功能还需移步官方文档去了解。
参考资料