Python 读写 Excel 文件-2 (openpyxl 进阶)
Python 读写 Excel 文件(进阶篇)
1. openpyxl 简介:现代办公自动化的首选
在上一章我们学习了旧版 .xls 文件的读写方法,但如今主流报表、统计表格早已全面转向 Office 2007 及之后版本使用的 .xlsx XML 格式。处理这种格式的 Python 工具中,openpyxl 是当之无愧的首选——它读写一体、功能丰富,而且语法设计非常贴合 Excel 原生操作习惯。
相比旧工具组合 xlrd / xlwt 在读写时需要切换不同库、且仅支持各自负责的旧格式,openpyxl 统一了所有操作,优势十分明显:
- 读写修改一气呵成:同一个工作簿对象,既可以读取已有内容,也可以修改、追加新数据,无需在多个库之间来回转换。
- 单元格定位更直观:直接使用
'A1'、'C4'这样的 Excel 坐标字符串,省去记忆行号列号的烦恼。 - 功能覆盖非常全面:原生支持字体、边框、对齐、填充等样式定制;可以直接写入真正可计算的 Excel 公式;还能在文件中嵌入可交互的原生图表(图表本身是 Excel 对象,不是静态图片)。
⚠️ 格式限制
openpyxl仅支持.xlsx和.xlsm格式,无法处理旧版.xls文件。如果仍需要处理.xls,请参考上一章介绍的专用工具。
安装指令
2. 读取 Excel 文件:灵活的坐标定位
openpyxl 在读取文件时提供了非常灵活的方式。除了普通的行列索引,最让人喜欢的就是原生 Excel 坐标字符串——写代码时不用再心算行列对应的数字,可读性极强,后续维护也省心。
实战:读取股票历史数据
小提示:
sheet.dimensions可以快速告诉你数据占用的矩形范围,例如A1:G255,这在调试时非常有用。
3. 写入与样式定制:让报表专业又美观
openpyxl 将各种样式(字体、对齐、边框、填充等)设计成了独立的“积木块”,我们可以分别定义好,再按需组装到单元格上,实现高度可复用的样式模板。
提醒:公式中的函数名和标点符号必须使用英文格式,中文标点会导致公式写入失败。
4. 生成专业原生 Excel 图表
这是 openpyxl 最受办公与报表场景欢迎的核心功能之一——它生成的不是静态图片,而是真正可交互的 Excel 图表对象。打开文件后,可以随意点击图表、编辑数据源、更改配色甚至切换图表类型(例如从柱状图换成折线图,只需几次点击)。
如果需要制作折线图,只需将 BarChart 替换为 LineChart,其余用法几乎相同,非常方便。
5. 总结与避坑建议
openpyxl 是处理现代 .xlsx 文件的首选库,它非常适合需要精细控制样式、写入公式或生成图表的场景。如果你只是进行大规模数据清洗与分析,Pandas 通常更高效,不过 Pandas 在保存 .xlsx 时底层也常常依赖 openpyxl 引擎。
实用避坑提醒
- 行列索引从 1 开始:这一点与许多编程习惯不同,如果记混了可能导致取错数据。
- 大数据量记得开只读/只写模式:读取百万行数据时请使用
load_workbook(…, read_only=True),写入大量数据时使用Workbook(write_only=True),以大幅降低内存占用。 - 公式一定要用英文标点:哪怕整个文件内容都是中文,公式部分也必须是半角英文符号,否则
openpyxl会报错。 - 图表数据引用小心行列范围:
Reference的min_row、max_row一定要与数据源准确对应,否则图表可能显示异常。
掌握了这些技巧,你就能用 Python 高效地生成结构清晰、样式美观且带有专业图表的 Excel 报表,真正实现办公自动化。

