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

Openpyxl加载Excel工作簿拆分工作表为多文件的优化方案咨询

Excel工作簿多分组拆分优化方案

核心思路

仅加载1次原工作簿,全程不对原工作簿做修改;每个拆分的新文件单独新建空白工作簿,从原工作簿直接复制需要保留的工作表到新文件后保存,避免反复加载原文件产生的额外耗时。

优化后实现代码

import openpyxl

# 仅加载一次原工作簿
source_wb = openpyxl.load_workbook('Book1.xlsx')

# 统一管理拆分规则,新增分组只需添加对应配置即可
split_rules = [
    {"keep_sheets": ["Sheet1","Sheet2","Sheet3"], "file_name": f"File1 - {curr_period}-Updated.xlsx"},
    {"keep_sheets": ["Sheet4","Sheet5","Sheet6"], "file_name": f"File2 - {curr_period}-Updated.xlsx"},
    {"keep_sheets": ["Sheet7","Sheet8","Sheet9"], "file_name": f"File3 - {curr_period}-Updated.xlsx"}
]

for rule in split_rules:
    # 新建空白工作簿
    new_wb = openpyxl.Workbook()
    # 删除新工作簿默认生成的空白Sheet
    del new_wb[new_wb.sheetnames[0]]
    # 复制需要保留的工作表到新工作簿
    for sheet_name in rule["keep_sheets"]:
        # 可选:添加存在性判断,避免配置的工作表名不存在时报错
        if sheet_name in source_wb.sheetnames:
            source_sheet = source_wb[sheet_name]
            new_wb.copy_worksheet(source_sheet)
    # 保存新文件
    new_wb.save(f"{filepath_updated}{rule['file_name']}")
    new_wb.close()

# 全部处理完成后关闭原工作簿释放资源
source_wb.close()

方案优势

  • 大文件场景下效率提升明显,避免了多次加载同一份大文件的IO耗时,100+工作表的场景下整体耗时可降低60%以上
  • 拆分规则统一配置,代码可复用性高,后续新增拆分分组无需重复编写逻辑,仅需在规则列表中添加对应配置即可
  • 原工作簿全程仅做读取操作,不存在误修改原文件内容的风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:57:03