Python如何将多个xlsx文件的同名对应工作表合并导出
合并多个含相同工作表名的xlsx文件实现方案
原有代码的错误逻辑是先将单个Excel文件内的所有工作表内容合并为单个DataFrame,再跨文件拼接,最终所有内容只会存在于同一个工作表中。正确逻辑是按工作表名分组,分别收集所有文件中对应工作表的内容,拼接完成后分别写入新文件的对应工作表。
完整实现代码
import pandas as pd import os # 替换为你存放三个Excel文件的实际目录路径 dir_path = r'C:\your\file\path' os.chdir(dir_path) # 筛选目录下所有待合并的xlsx文件,排除最终输出文件避免重复合并 excel_files = [f for f in os.listdir(dir_path) if f.endswith('.xlsx') and f != 'family_schedule.xlsx'] # 定义需要合并的工作表名,也可以读取第一个文件的sheet_names属性动态获取 sheet_names = ['home', 'office', 'school'] # 初始化字典,每个键对应一个工作表,值存储所有文件中该工作表的DataFrame sheet_data = {name: [] for name in sheet_names} # 遍历所有待合并文件,按工作表收集数据 for file in excel_files: excel_obj = pd.ExcelFile(file) for sheet in sheet_names: current_df = excel_obj.parse(sheet) # 可选配置:新增一列标记数据来源,方便后续区分是哪个人的日程 # current_df['owner'] = file.split('_')[0] sheet_data[sheet].append(current_df) # 分别拼接每个工作表的数据,写入最终输出文件 writer = pd.ExcelWriter('family_schedule.xlsx', engine='xlsxwriter') for sheet_name, df_list in sheet_data.items(): merged_df = pd.concat(df_list, ignore_index=True) merged_df.to_excel(writer, sheet_name=sheet_name, index=False) # 保存文件 writer.save()
代码说明
- 自动过滤目录下的非xlsx文件,同时排除最终输出的
family_schedule.xlsx,避免重复合并 - 按工作表维度分组存储数据,保证不同工作表的内容不会混在一起
- 拼接时开启
ignore_index=True重置行索引,避免出现重复的行号 - 保留原有的工作表名写入新文件,符合输出要求
内容的提问来源于stack exchange,提问作者nasa313
相关产品推荐
相关产品推荐

