You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:54:03