Python批量处理Excel:避开格式与编码两个坑
- 2026-11-07 12:46:56
我是老姚,常德人,朝九晚五的普通上班族。前几年为了多赚点烟钱,开始琢磨副业,试了网盘拉新,也折腾过各种自动化工具。说实话,很多技术玩意儿听起来高大上,但真正能落地省钱省力的,往往就是身边最土的那套——比如用 Python 写个脚本,把每天重复的 Excel 活儿一次性跑完。 笔者在文档撰写场景下实测这款软件,发现确实省了不少时间。
我以前每天下班前都要手动合并十几张日报,复制粘贴搞到手酸,还容易出错。后来咬牙学了点 Python,用 openpyxl 库写了个脚本,现在一键搞定。但这过程真不是一帆风顺,我踩了两个最大的坑:一个是格式错乱,一个是编码报错。今天就把这两个坑挖出来,给想动手的朋友提个醒。
格式错乱:你以为读的是文本,它读的是数字
第一个坑,出在数据格式上。我有个同事的报表,看起来全是文本,比如“001”、“002”这种编号。我用 Python 读的时候,它直接给我变成了数字 1、2。更坑的是,有些单元格明明看着是日期,其实里面存的是序列号,读出来就是一串乱码数字,比如“44927”。
我一开始以为代码写错了,反复检查逻辑,结果发现是 Excel 的锅。Excel 为了省空间,有时候会把文本当数字存,或者把日期当整数存。我用 openpyxl 读取时,如果不指定数据类型,它就按它认为最“省空间”的方式给你吐出来。
解决办法其实挺笨的:先打开 Excel,选中那些“看起来像文本但被当数字”的列,用分列功能,强制转成文本格式。或者在 Python 里读取后,用 str() 强转,再补零。这一步省不掉,硬来只会让你对着满屏的“1”发呆。记住,Excel 不是数据库,它很“聪明”,也很“狡猾”,你得当心它自作主张。
编码报错:中文文件名里的“乱码”陷阱
第二个坑,更隐蔽,叫编码问题。有一次我写了个批量重命名脚本,跑起来特别顺,直到我试着处理一个包含中文的文件夹。结果程序直接报错,什么“UnicodeEncodeError”、“FileNotFoundError”,查了半天才发现,是 Windows 系统的默认编码在作祟。
我的脚本里写了 open(file, 'r', encoding='utf-8'),理论上没问题。但在 Windows 上,如果系统区域设置不是中文,或者文件名里有特殊字符,Python 就会懵圈。它可能在读取文件列表时就挂了,或者在写入日志时崩溃。
我当时的解决方式挺土:先把所有涉及中文的路径,用 os.path.abspath() 标准化一下,再统一用 utf-8 编码读写。另外,写日志的时候,别直接用 print 往控制台怼,先 sys.stdout.reconfigure(encoding='utf-8'),或者干脆把日志写进文件,用 encoding='utf-8' 参数打开。这一步搞定了,中文路径、中文内容就不再是拦路虎。
结语:别怕麻烦,自动化是省出来的
写这两个坑,不是想吓退大家,而是想说:自动化这事儿,前期踩坑是必然的。Python 确实能帮你把每天重复的 Excel 活儿写个脚本一次跑完,但前提是你得先搞定格式和编码这两个“隐形地雷”。
我现在的习惯是,遇到新问题,先搜 openpyxl 的官方文档,再看看别人怎么处理的。别一上来就抄代码,先理解它为什么错。副业也好,工作也罢,少一点焦虑,多一点实操,踩过的坑都会变成你的经验。下次再遇到类似的 Excel 活儿,不妨试试用 Python 动动手,你会发现,原来这么简单。
Python #副业 #AI工具 #Q领 #网盘拉新
Q领 · 用 AI 把副业跑通
本文由公众号 Q领 原创出品。关注我们,每周拆解一个能落地的 AI 副业玩法,附可直接套用的提示词与工具清单。
© Q领 · 转载请注明出处