如何用Python或R合并表头不一致的多Sheet Excel文件?
解决Excel多工作表(表头不一致)合并问题
我来帮你搞定这个多Sheet表头不一致的Excel合并需求!这种场景用Python的pandas库处理最灵活,能自动对齐不同表头,缺失列自动填充空值,完全适配你的情况。
步骤1:先装必要依赖
如果还没安装相关库,打开命令行跑这行:
pip install pandas openpyxl
(如果你的Excel是.xls格式,把openpyxl换成xlrd就行)
步骤2:直接用这段脚本合并
把下面代码里的your_excel_file.xlsx换成你的文件路径,运行就能生成合并后的文件:
import pandas as pd # 读取目标Excel的所有工作表 excel_file = pd.ExcelFile("your_excel_file.xlsx") # 逐个读取工作表数据,存到列表里 sheet_dfs = [] for sheet_name in excel_file.sheet_names: df = excel_file.parse(sheet_name) # 可选:给每行加个来源Sheet标记,方便后续溯源 df["来源工作表"] = sheet_name sheet_dfs.append(df) # 合并所有数据,自动对齐表头,缺失列填充NaN merged_result = pd.concat(sheet_dfs, ignore_index=True) # 把合并结果导出成新Excel merged_result.to_excel("合并后的Excel文件.xlsx", index=False, engine="openpyxl") print("合并完成!结果已保存到当前目录")
关键细节说明
- 自动对齐表头:
pd.concat()会自动识别所有Sheet的列名,相同列名的内容会合并到一起,某个Sheet没有的列会用NaN(空值)填充,完美解决表头差异问题。 - 来源标记:代码里的
来源工作表列可以帮你快速知道每行数据来自哪个原始Sheet,不需要的话删掉那两行就行。 - 空值处理:如果想把空值换成0或者其他内容,合并后加一行代码就行:
# 把所有空值填充为0,按需调整 merged_result = merged_result.fillna(0)
比如你提供的Sheet1有FISCAL_YEAR、COMPANY_CODE等列,假设另一个Sheet有FISCAL_YEAR、ACCOUNTS、Header3这些列,合并后会包含所有列,缺失的单元格自动补空,完全不影响数据完整性。
内容的提问来源于stack exchange,提问作者Shubhankar Dash




