OpenPyXL 是一个功能强大的第三方 Python 库,用于读取、写入与编辑 Excel 文件(.xlsx 格式)。
它可以创建新工作簿、修改单元格内容、设置样式、合并单元格、插入图表等,是进行 Excel 自动化处理的核心工具之一。
安装:
nginx
pip install openpyxl
常见应用场景:
(1)创建与编辑 Excel 文件
从零创建工作簿,编写表格数据,保存为 .xlsx 文件。
(2)数据读取与分析
读取指定单元格、行列数据或整张表的内容。
(3)格式化与样式控制
支持字体、颜色、边框、对齐方式、合并单元格、行高列宽等格式调整。
(4)公式与图表支持
可在单元格中写入公式,插入折线图、柱状图等。
(5)批量报表与数据导出
常用于报表生成、数据统计或自动导出 Excel 文件。
◆ ◆ ◆
核心概念
1、工作簿(Workbook)
Excel 文件的整体对象,可包含多个工作表。
2、工作表(Worksheet)
每个工作表是一张表格,通过 wb.active 或 wb[sheet_name] 获取。
3、单元格(Cell)
Excel 的最小数据单元,可通过 ws["A1"] 或 ws.cell(row, column) 访问。
4、数据读写
写入:cell.value = ...
读取:value = cell.value
5、样式与格式
使用 openpyxl.styles 模块设置字体、颜色、对齐方式等。
6、保存与加载
使用 Workbook.save() 保存文件,load_workbook() 打开已有文件。
◆ ◆ ◆
应用举例
例 1:创建 Excel 文件并写入数据
go
from openpyxl import Workbook
wb = Workbook()ws = wb.active
ws.title = "学生成绩"ws["A1"] = "姓名"ws["B1"] = "成绩"ws.append(["张三", 90])ws.append(["李四", 85])
wb.save("students.xlsx")
生成文件 students.xlsx,包含表头与两行数据。
例 2:读取已有 Excel 文件
python
from openpyxl import load_workbook
wb = load_workbook("students.xlsx")ws = wb["学生成绩"]
for row in ws.iter_rows(values_only=True): print(row)
输出:
javascript
('姓名', '成绩')('张三', 90)('李四', 85)
例 3:设置单元格样式
python
from openpyxl import Workbookfrom openpyxl.styles import Font, Alignment
wb = Workbook()ws = wb.active
ws["A1"] = "标题"ws["A1"].font = Font(size=16, bold=True, color="0070C0")ws["A1"].alignment = Alignment(horizontal="center")
wb.save("styled.xlsx")
单元格 A1 将以蓝色加粗大号字体居中显示。
例 4:合并单元格与设置列宽
apache
from openpyxl import Workbook
wb = Workbook()ws = wb.active
ws.merge_cells("A1:C1")ws["A1"] = "销售报表"ws.column_dimensions["A"].width = 20ws.column_dimensions["B"].width = 15ws.column_dimensions["C"].width = 15
wb.save("merged.xlsx")
例 5:写入公式与插入图表
makefile
from openpyxl import Workbookfrom openpyxl.chart import BarChart, Reference
wb = Workbook()ws = wb.active
ws.append(["月份", "销售额"])data = [("1月", 3000), ("2月", 4200), ("3月", 5000)]for row in data: ws.append(row)
# 写入公式ws["C5"] = "=SUM(B2:B4)"
# 创建柱状图chart = BarChart()chart.title = "销售趋势"values = Reference(ws, min_col=2, min_row=1, max_row=4)cats = Reference(ws, min_col=1, min_row=2, max_row=4)chart.add_data(values, titles_from_data=True)chart.set_categories(cats)ws.add_chart(chart, "E2")
wb.save("chart.xlsx")
◆ ◆ ◆
常用函数与类速览
Workbook()
创建一个新的工作簿对象。
返回:Workbook 实例对象。
Workbook.active
获取当前活动工作表。
返回:Worksheet 对象。
Workbook.create_sheet(title=None)
创建新的工作表。
参数:
title:工作表名称(可选)。
返回:新创建的 Worksheet 对象。
Workbook.save(filename)
将工作簿保存为指定文件。
参数:
filename:输出文件名(含路径)。
返回:无。
load_workbook(filename)
加载一个现有的 Excel 文件。
参数:
filename:Excel 文件路径。
返回:Workbook 对象。
Worksheet.append(iterable)
在工作表末尾追加一行数据。
参数:
iterable:可迭代对象(如列表、元组)。
返回:无。
Worksheet.iter_rows(values_only=False)
按行迭代工作表内容。
参数:
values_only:若为 True,仅返回单元格值。
返回:生成器对象。
Worksheet.merge_cells(range_string)
合并指定区域的单元格。
参数:
range_string:合并范围(如 "A1:C1")。
返回:无。
Worksheet.column_dimensions
设置列宽或访问列属性。
返回:DimensionHolder 对象。
Cell.value
访问或设置单元格的值。
参数:无(属性访问)。
返回:单元格中的内容。
openpyxl.chart.BarChart()
创建柱状图对象,可用于插入 Excel 图表。
返回:BarChart 实例对象。
◆ ◆ ◆
补充说明
1、OpenPyXL 仅支持 Excel 2007 及以上版本的 .xlsx 格式,不支持旧版 .xls。
2、它支持 Pandas DataFrame 导出(通过 df.to_excel() 内部调用 openpyxl)。
3、当需要操作大型文件时,可使用 read_only=True 模式优化性能。
4、若需写入超大数据量,可结合 write_only=True 模式逐行写入,节省内存。
📘 小结
OpenPyXL 是 Python 操作 Excel 的事实标准库,集数据处理、格式控制与可视化于一体。
无论是办公自动化、报表生成还是科学计算,OpenPyXL 都能提供稳定而强大的支持。

"点赞有美意,赞赏是鼓励"