日常办公中,我们经常会拿到一个包含 N 多个工作表的 Excel 文件,每个表头两行,真正的数据从第 3 行才开始。复制粘贴太痛苦,VBA 又嫌重?今天教你 15 行 Python 代码一键搞定,支持任意多个工作表、自动去头拼接,最后生成新的汇总文件。
1. 前置准备
只需要两个第三方库:
pip install pandas openpyxl
如果你已经安装过,就可以跳过这步。
2. 脚本一览(全路径版)
把下面内容保存成 merge_excel.py
,无需放在源文件同目录,直接运行即可。
import warnings
import pandas as pd
from pathlib import Path
# 可选:屏蔽 openpyxl 的 Data Validation 警告
warnings.filterwarnings("ignore", category=UserWarning, module="openpyxl")
# 1. 文件路径:使用完整绝对路径
src_file = Path(r"C:\Users\xxx\Desktop\xxxx.xlsx")
dst_file = src_file.with_name(src_file.stem + "_合并.xlsx")
# 2. 读取全部 sheet,从第 3 行开始截取
parts = [
df.iloc[2:] # 跳过前两行
for _, df in pd.read_excel(
src_file, sheet_name=None, header=None
).items()
]
# 3. 合并 & 写出
merged = pd.concat(parts, ignore_index=True)
merged.to_excel(dst_file, index=False, header=False, sheet_name="合并结果")
print(f"✅ 已生成:{dst_file}")
3. 运行
在终端 / 命令行里直接执行:
python merge_excel.py
几秒后,会在与源文件同目录下得到一个名为
testcaseTemplate -20250716上游定金_合并.xlsx
的新文件,所有工作表的数据从第 3 行开始已自动拼接完成。
4. 常见疑问
问题 | 解答 |
---|---|
文件路径换到其他盘? | 把 src_file 改成新的绝对路径即可,例如 Path(r"D:\data\demo.xlsx") |
只想合并部分 sheet? | 用 sheet_name=['Sheet1','Sheet3'] 代替 None |
想保留原表头? | 把 df.iloc[2:] 改成 df ,并在写出时设置 header=True |
至此,多 Sheet 合并任务完成,以后再也不用“复制-粘贴”折磨自己啦!