每个月底,你打开那份几百行的销售报表,开始逐行复制、粘贴、改格式、填公式——一套流程下来两个小时没了。第二个月,再来一遍。第三个月,还是一遍。
这不是工作,这是惩罚。
更残忍的是,这种重复不会让你成长,只会让你越来越麻木。而你身边那个"Excel高手",早就不做这些了。
01他们到底在用什么?
不是什么付费插件,也不是企业版Office的隐藏功能。
答案是一个叫 openpyxl 的开源Python库,GitHub上星标超过4000,专门用来读写、操作Excel文件。配合Python脚本,它能把你每个月重复做的事情,压缩成一次回车。
项目地址:https://github.com/theorchard/openpyxl(PyPI直接安装)
很多人听说过"Python处理Excel",但停在了"听说过"这一步。这篇文章就是要把这一步走完。
02你每天在手工做的,它都能接管
批量填表:从"一行一行填"到"一键生成"
最常见的场景:每周从系统导出一份原始数据,需要按固定格式整理成报表,发给领导。
用 openpyxl 写一个脚本,读取原始数据,按列映射填入模板,自动保存为新文件。整个过程不超过10行代码,执行时间不超过3秒。
对比手工操作:原来需要40分钟的整理工作,变成双击一个.py文件。
from openpyxl import load_workbook
wb = load_workbook('template.xlsx')
ws = wb.active
data = [["张三", "销售部", 15200], ["李四", "运营部", 13800]]
for i, row in enumerate(data, start=2):
for j, val in enumerate(row, start=1):
ws.cell(row=i, column=j, value=val)
wb.save('report_output.xlsx')
就这些。模板不动,数据换一批,再跑一次,新报表出来了。
格式刷不用手刷:样式批量应用
反常识的地方来了。
很多人以为Python处理Excel只能填数据,格式要另外手动调。实际上openpyxl可以完整控制单元格的字体、颜色、边框、对齐方式,甚至条件格式。
你可以把一套标准样式写成函数,一次性应用到整张表的指定区域。以前用格式刷刷100行,现在一个循环搞定。
from openpyxl.styles import Font, PatternFill
for row in ws.iter_rows(min_row=2, max_row=100):
for cell in row:
cell.font = Font(name='微软雅黑', size=10)
if cell.row % 2 == 0:
cell.fill = PatternFill("solid", fgColor="F2F2F2")
隔行填色、表头加粗、数字列右对齐——这些在WPS或Excel里要点好几轮菜单的操作,在脚本里是固定资产,写一次永久复用。
多表合并:从"打开十个文件"到"一个脚本"
月底汇总各部门数据,每个部门一个Excel文件,你要打开十个、复制十次、粘贴十次,还要小心别搞错行。
openpyxl可以遍历一个文件夹里所有的.xlsx文件,逐一读取指定Sheet的数据,追加写入汇总表。
import os
from openpyxl import load_workbook, Workbook
output = Workbook()
ws_out = output.active
for filename in os.listdir('./reports'):
if filename.endswith('.xlsx'):
wb = load_workbook(f'./reports/{filename}')
ws = wb.active
for row in ws.iter_rows(min_row=2, values_only=True):
ws_out.append(row)
output.save('merged.xlsx')
十个文件、几千行数据,3秒合并完毕,格式统一,不会手滑。
03和VBA比,它赢在哪里?
很多老Excel用户会说:这些VBA也能做。
能做,但有几个硬伤:
- VBA绑定在Office里,换电脑、换系统、发给别人,宏经常失效或被安全策略拦截
- VBA调试体验差,报错信息模糊,出了问题很难排查
- VBA无法和其他系统联动,而Python可以直接对接数据库、API、邮件系统
用Python + openpyxl写的脚本,可以挂在服务器上定时跑,可以接收邮件附件自动处理,可以把结果直接推送到钉钉或企业微信。VBA做不到这些。
对比工具:如果你之前用过 Power Query 做数据整合,openpyxl能做的事情更底层、更灵活,适合需要定制逻辑的场景。
04上手门槛有多低?
安装只需要一行:
pip install openpyxl
不需要安装Office,不需要注册账号,不需要联网授权。Windows、Mac、Linux全平台可用。
如果你完全没有Python基础,建议先花两小时看一下Python基础语法(变量、循环、函数),然后直接对照openpyxl的官方文档动手或者直接AI生成。官方文档写得很清楚,有大量示例代码可以直接复制改用。
官方文档地址:https://openpyxl.readthedocs.io
05从哪个任务开始练手?
不要等到"学完"再用,找一个你下周就要做的重复任务,直接上手。
推荐第一个练手任务:把一份固定格式的CSV数据,自动写入Excel模板并保存。
这个任务涉及读文件、写单元格、保存文件三个核心操作,覆盖了openpyxl 80%的日常用法。做完这一个,后面的批量合并、样式控制都是顺水推舟。
你现在每个月花在Excel上的重复时间,加起来是多少小时?
把这个数字乘以12,再乘以你的时薪。
这就是你一直在免费奉献出去的成本。
openpyxl是免费的,Python是免费的,你的时间不是。
夜雨聆风