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

如何用openpyxl将多个xlsx文件合并为含不同工作表的单个xlsx文件

问题描述

需要将列表中的多个xlsx文件合并为一个文件,要求每个工作表以对应的源文件名命名。已知单个xlsx文件仅包含一个存储行列数据的工作表,使用openpyxl库进行操作。提供的文件列表如下:

xlsx_files = ['u_gen_inf.xlsx', 'u_dates_inf.xlsx', 'u_ctrl_inf.xlsx']

希望编写通用循环逻辑(不受文件数量限制),初始代码框架如下:

from openpyxl import load_workbook, Workbook

for f in xlsx_files:
    ? load_workbook() - universal code independent of the number of xlsx files

wb_master.save('master_users_inf.xlsx')
解决方案

以下是满足需求的完整通用代码:

from openpyxl import load_workbook, Workbook

# 创建主工作簿
wb_master = Workbook()
# 删除默认生成的空白工作表,避免冗余
wb_master.remove(wb_master.active)

for f in xlsx_files:
    # 加载源文件工作簿
    wb_source = load_workbook(f)
    # 获取源文件的唯一工作表
    ws_source = wb_source.active
    # 提取文件名(去掉.xlsx后缀)作为新工作表名称
    sheet_name = f.replace('.xlsx', '')
    # 在主工作簿中创建对应名称的新工作表
    ws_new = wb_master.create_sheet(title=sheet_name)
    # 逐行复制源工作表的数据到新工作表
    for row in ws_source.iter_rows(values_only=True):
        ws_new.append(row)

# 保存合并后的主工作簿
wb_master.save('master_users_inf.xlsx')

代码说明

  • 先创建主工作簿并删除默认空白工作表,避免最终文件出现无意义的初始工作表。
  • 循环处理每个源文件时:
    • 直接加载源工作簿并获取唯一的活动工作表。
    • 用源文件名(去除后缀)作为新表名称,保证工作表与源文件一一对应。
    • 通过iter_rows(values_only=True)高效读取源表数据,逐行追加到新工作表中。
  • 最后保存合并完成的主工作簿。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:01:08