夜雨聆风学习资料网

ARTICLE · 1131038

用Python把每天重复的Excel活儿写个脚本一次跑完

用Python把每天重复的Excel活儿写个脚本一次跑完

以前我特别羡慕那种“自动化办公”的大神,觉得离自己很远。我有个做外贸的客户,每天下班前都要花两个小时,把十几家物流商发来的Excel表格合并、清洗、改格式,再发给他老板。那阵子他愁得头发掉了一地。

我当时就想,这活儿Python肯定能搞。于是我用 openpyxl 写了个脚本,第一次跑完,客户看着我眼神都变了。今天就把这个实战经验掰开揉碎了讲给你们,特别是里面两个坑,我当初踩得那叫一个疼。

先说场景,别一上来就敲代码

很多兄弟一上来就百度“Python合并Excel”,代码抄下来跑不通就骂娘。其实第一步是搞清楚你要干什么。我那客户的场景很典型:一个文件夹里有一堆子文件夹,每个子文件夹里是不同物流商发来的日报,格式还不一样。有的列顺序不同,有的表头多一行,有的数据是文本格式,有的是数字。

我的思路是:遍历文件夹 -> 读取每个文件 -> 提取关键列 -> 统一格式 -> 写入一个新的汇总文件。整个过程,我让它自动跑,不用人盯着。

坑一:格式错乱,你以为是数字其实是文本

上次我写那个脚本,跑出来数据全对,但我一看汇总表格,一求和,报错。我查了半天,发现那些看起来像数字的单元格,在Python眼里其实是字符串。比如 openpyxl 读出来的 100,可能是 '100'。

怎么解决?我在代码里加了个判断,如果单元格值是字符串,就尝试用 float() 或者 int() 转换。如果转换失败,就保留原值或者记个日志。另外,有些Excel文件是从系统导出的,列宽、行高、甚至背景色都带着,我们只要数据,不要那些花里胡哨的格式。我在写新文件的时候,只写入数值,不复制样式,这样文件小,处理也快。

还有个更隐蔽的坑:日期格式。有的Excel里日期是 datetime 对象,有的是字符串 2023-10-01。我在合并的时候,统一把它们转成 YYYY-MM-DD 的字符串,避免后面再折腾。

坑二:编码问题,中文直接乱码

这坑我踩得最惨。有一回,我处理一个客户的订单表,文件名和表格里都有中文。我用 pandas 读的时候没问题,但用 openpyxl 写入的时候,中文全变成了问号或者乱码。

我一开始以为是 openpyxl 的问题,后来查了资料才发现,是保存文件时的编码问题。虽然我设置的是UTF-8,但Excel本身对某些编码支持不太好。解决办法是,在保存之前,确保所有字符串都是标准的Unicode,并且在写入时,如果遇到特殊字符,做好兼容处理。

另外,我建议大家多用 try-except 块来包裹读取和写入的代码。万一哪个文件格式奇葩,脚本崩了,你也能看到是哪里出的问题,而不是直接报错退出来,啥也查不到。

最后一点心得

写脚本不是为了炫技,是为了省时间。我那客户现在每天下班准时走,脚本跑完,数据就在那了。我也从中学到了不少东西,比如 openpyxl 的 iter_rows 方法,比 cell 逐个读取快多了。

如果你也有这种重复性的Excel活儿,别硬扛。花半天时间写个脚本,能省下半年的加班。当然,前提是你要耐得住性子,一步步调试。别指望一次就完美,我第一次跑也是bug一堆,改了好几次才顺。

总之,技术这东西,用的时候才知道香。希望你们也能早日从重复劳动中解放出来。

前后对比

改之前:我刚碰「用Python把每天重复的Excel活儿写个脚本一次跑完」那会儿,也是凭感觉硬试,走了不少弯路,时间花了不少,效果却一般。 改之后:把上面这些门道摸清楚之后,同样的用Python把每天重复的Excel活儿写个脚本一次跑完做起来顺多了,少踩坑、出活也快——这前后的差别,自己试一次就知道。

(本文由 AI 辅助创作,观点与案例为本人整理)

Q领 · 用 AI 把副业跑通

本文由公众号 Q领 原创出品。关注我们,每周拆解一个能落地的 AI 副业玩法,附可直接套用的提示词与工具清单。

© Q领 · 转载请注明出处

相关学习资料