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

使用Python将多个Excel文件合并为单个文件的问题咨询

多Excel文件合并解决方案

原有代码问题排查

  • 导入别名不一致:代码开头导入pandas时取了别名pd,后续调用ExcelFile、concat等方法时混用了pandas全名和pd别名,会触发命名未定义报错
  • 无效冗余代码:pd.read_excel(excel_names, engine='openpyxl')既没有赋值接收返回结果,也不支持直接传入文件路径列表,属于无效代码
  • 变量未定义:最后一行的excl_merged变量没有提前声明,你之前合并后的结果存储在combined变量中,这行是冗余错误代码
  • 逻辑未匹配需求:当前代码只读取了每个Excel文件的第一个工作表,如果需要合并单个文件内的多个工作表,需要调整读取逻辑

修复后可运行代码

场景1:每个Excel文件只有1个工作表,合并所有文件的第一个工作表

import pandas as pd

# 填入你要合并的所有Excel文件路径
excel_names = ["/tmp/xlsx1.xlsx", "/tmp/xlsx2.xlsx", "/tmp/xlsx3.xlsx"]
excels = [pd.ExcelFile(name, engine='openpyxl') for name in excel_names]

# 读取每个文件的第一个工作表,header=None表示不把第一行认作表头
frames = [x.parse(x.sheet_names[0], header=None, index_col=None) for x in excels]

# 去掉除第一个文件外其他文件的表头(如果所有文件表头一致需要去重的话保留这行,不需要就删除)
frames[1:] = [df[1:] for df in frames[1:]]

# 纵向拼接所有表格
combined = pd.concat(frames)

# 导出合并结果,header=False表示不写入表头,和前面的读取逻辑对应
combined.to_excel("total_food_sales.xlsx", header=False, index=False, engine='openpyxl')

场景2:需要合并所有Excel文件内的所有工作表

import pandas as pd

excel_names = ["/tmp/xlsx1.xlsx", "/tmp/xlsx2.xlsx", "/tmp/xlsx3.xlsx"]
frames = []

for excel_path in excel_names:
    xls = pd.ExcelFile(excel_path, engine='openpyxl')
    # 读取当前Excel的所有工作表
    for sheet_name in xls.sheet_names:
        df = xls.parse(sheet_name, header=None, index_col=None)
        frames.append(df)

# 去重表头逻辑,不需要可以删除
frames[1:] = [df[1:] for df in frames[1:]]

combined = pd.concat(frames)
combined.to_excel("total_food_sales.xlsx", header=False, index=False, engine='openpyxl')

注意事项

  • 运行前请先安装依赖:pip install pandas openpyxl
  • 如果你的表格第一行就是数据不需要做表头处理,删除frames[1:] = [df[1:] for df in frames[1:]]这行,同时把to_excel的header参数改为True即可

内容的提问来源于stack exchange,提问作者VINOD S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:39:04