一、痛点:表多到怀疑人生
月底 / 年末,各分公司、各门店、各项目发来一堆同名不同内容的表。你要做同样的操作:改表头、补公式、统一样式、提取汇总。手工一个个开,下班无望。
核心心法:先把“对一张表做的事”写成函数,再用循环套到所有表上。
二、核心原理
- 1.
glob / Path.glob 找出所有目标文件
三、核心代码
from pathlib import Path
import pandas as pd
src = Path("各分公司报表/8月")
out = Path("各分公司报表/8月_已处理")
out.mkdir(exist_ok=True)
for xlsx in src.glob("*.xlsx"): # 1. 找出所有 Excel
df = pd.read_excel(xlsx)
# 2. 统一处理:补“合计”列、规范列名
df.columns = df.columns.str.strip()
df["合计"] = df["收入"] - df["支出"]
# 3. 输出到新文件
df.to_excel(out / f"已处理_{xlsx.name}", index=False)
print("已处理:", xlsx.name)
加个进度提示和异常捕获,就是生产级脚本:
for xlsx in src.glob("*.xlsx"):
try:
... # 处理逻辑
except Exception as e:
print("失败:", xlsx.name, e) # 单表出错不影响整体
四、界面化(PyQt5 批量处理器)
三个框:源文件夹、输出文件夹、处理类型下拉(加列 / 改表头 / 转格式),点“开始批量”,进度条 + 日志滚动。失败项高亮,一眼看到。
五、常见坑
- 1. 表头不一致:有的叫“收入”,有的叫“营收”,先
df.rename() 统一再处理。 - 2. 空表 / 损坏文件:
try/except 跳过,别让一个坏文件卡住全程。 - 3. 覆盖原文件:输出到新文件夹,原表留底,出问题能重来。
- 4. sheet 不止一个:
pd.read_excel(path, sheet_name=...) 指定,或循环所有 sheet。 - 5. 内存爆掉:百个表别同时读进内存,处理完一个释放一个。
六、工具怎么用
- 2. 选“源文件夹”(放那 80 张表)和“输出文件夹”
七、小结
批量处理的本质就一句话:单表逻辑函数化 + 循环套用 + 异常兜底。掌握它,百表来袭也能准点下班。
八、社媒文案(公众号 + 小红书)
公众号标题:领导甩来 80 个 Excel?别一个个开,Python 一个循环全处理完
小红书正文:
月末各分公司报表砸过来 80 张,每张都要改格式算合计,手开直接崩溃😇 后来我把“对一张表做的事”写成函数,再 for 循环套到所有表,3 分钟全搞定!失败的单张自动跳过不卡壳。准点下班真香~
标签:
#Python批量处理#Excel自动化#办公效率#for循环#打工人#效率翻倍#pandas#准点下班