一个Excel文件里,1月到12月的销售数据分别在12个Sheet里 。领导说:"小张,帮我汇总成一张总表"。 12个sheet我还可以偶尔复制粘贴一下,如果以后有40个sheet让我汇总,如何快速合并成一张总表呢?
今天3行代码解决这个问题。
准备工作
安装好python3.*,然后打开命令行窗口输入如下命令后按回车键:
pip install pandas openpyxl
下图是命令行窗口输入命令的界面:
业务数据
下面是我的excel文件,里面有12个sheet。

全部代码
新建merge_sheets.py文件,并输入如下代码:
import pandas as pd
读取Excel里的所有Sheet
all_sheets = pd.read_excel("./销售数据.xlsx", sheet_name=None)
合并所有Sheet
df = pd.concat(all_sheets.values(), ignore_index=True)
保存结果
df.to_excel("合并总表.xlsx", index=False)
print(f"合并完成!共 {len(df)} 行数据") 就这么简单。
运行代码
在命令行窗口输入如下命令:
python merge_sheets.py
运行后,只需1秒,12个sheet就合并好了。
生成的合并文件如下图:

代码解析
补充说明:pd.concat() 也可以按列合并(设置 axis=1),但本场景是上下堆叠数据,所以使用默认的 axis=0。
常见问题

进阶版:保留Sheet名称作为一列
想知道每一行数据来自哪个Sheet?
加一行代码:如下图,标红处为新加的代码。
运行该脚本后,发现:
excel中多个sheet合并后的文件多了“来源”一列,如下图:

写在最后
手动复制粘贴是体力活效率低下,写代码会让办公效率飞起。
这篇代码特别适合:
月度/季度报表汇总
多部门数据整合
任何"结构相同、分Sheet存放"的数据。