合并文件夹内多工作表Excel文件时遇表头重复及工作表缺失问题
问题解决:合并含多工作表的Excel文件
问题分析
你遇到的表头重复、部分工作表未合并的问题,主要源于两点:
- Windows路径中的反斜杠未转义,导致文件匹配或读取异常;
- 数据合并方式的潜在问题,以及工作表表头识别不一致。
修正代码(合并所有工作表到一个表)
import pandas as pd import glob # 用原始字符串避免路径转义错误 path = r"C:\Users\Alan\Desktop\" filenames = glob.glob(path + "*.xlsx") output_df = pd.DataFrame() for file in filenames: # 读取当前文件的所有工作表 sheets = pd.read_excel(file, sheet_name=None, header=0) # 合并当前文件的所有工作表 file_combined = pd.concat(sheets.values(), ignore_index=True, sort=False) # 汇总到总数据框 output_df = pd.concat([output_df, file_combined], ignore_index=True) # 导出汇总文件 output_df.to_excel(r"C:\Users\Alan\Desktop\Output.xlsx", index=False)
可选:按工作表名分别合并(同名工作表汇总到同一表)
如果需要将所有文件中的同名工作表分别汇总到输出文件的对应工作表中,使用以下代码:
import pandas as pd import glob path = r"C:\Users\Alan\Desktop\" filenames = glob.glob(path + "*.xlsx") sheet_summary = {} for file in filenames: sheets = pd.read_excel(file, sheet_name=None, header=0) for sheet_name, df in sheets.items(): if sheet_name not in sheet_summary: sheet_summary[sheet_name] = [] sheet_summary[sheet_name].append(df) # 导出到多工作表的Excel文件 with pd.ExcelWriter(r"C:\Users\Alan\Desktop\Output.xlsx") as writer: for sheet_name, dfs in sheet_summary.items(): combined_df = pd.concat(dfs, ignore_index=True) combined_df.to_excel(writer, sheet_name=sheet_name, index=False)
关键修正点
- 路径处理:用原始字符串
r"路径"避免反斜杠被解析为转义字符,确保glob能匹配到所有目标文件; - 表头识别:明确指定
header=0,强制将每个工作表的第一行作为表头,避免表头被当作数据重复添加; - 合并方式:使用
pd.concat替代已弃用的append方法,数据合并更稳定可靠。
内容的提问来源于stack exchange,提问作者Alan Proença
相关产品推荐
相关产品推荐

