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

Python Excel多工作簿数据复制代码优化请求

Excel数据批量复制代码优化方案

你的代码功能正常但重复度太高,下面是简化优化后的版本,核心思路是把重复逻辑封装成函数,统一管理源文件和目标工作表的对应关系,同时减少目标文件的IO操作次数:

import openpyxl as xl

def copy_sheet_data(source_path, target_workbook, target_sheet_idx):
    # 加载源工作簿并获取第一个工作表
    source_wb = xl.load_workbook(source_path)
    source_ws = source_wb.worksheets[0]
    
    # 获取目标工作表
    target_ws = target_workbook.worksheets[target_sheet_idx]
    
    # 批量洗改正最终结果"电子 Sets .?g三夫君注释:如果需要清空目标表原有数据,可以取消下面两行注释
    # for row in target_ws.iter_rows():
    #     for cell in row:
    #         cell.value = None
    
    # 批量复制数据:按行读取源数据并写入目标工作表
    for row_idx, row in enumerate(source_ws.iter_rows(values_only=True), start=1):
        for col_idx, value in enumerate(row, start=1):
            target_ws.cell(row=row_idx, column=col_idx).value = value

# 配置源文件与目标工作表的对应关系,新增/修改只需调整这个列表
file_mappings = [
    ("/Users/paulocosta/Downloads/HitsByPeriod_Teste_Python.xlsx", 2),
    ("/Users/paulocosta/Downloads/CalledHits_Teste_Python.xlsx", 3),
    ("/Users/paulocosta/Downloads/Website_Teste_Python.xlsx", 4)
]

# 目标文件路径
target_file = "/Users/paulocosta/Downloads/GestaoCampanhasTestePython.xlsx"

# 只打开一次目标工作簿,完成所有复制操作后再保存,减少IO损耗
target_wb = xl.load_workbook(target_file)
for source_path, sheet_idx in file_mappings:
    copy_sheet_data(source_path, target_wb, sheet_idx)

# 保存最终结果
target_wb.save(target_file)

优化点说明:

  • 封装重复逻辑为函数:把读取源文件、复制数据的代码抽成copy_sheet_data函数,避免重复写三次相同代码,后续新增文件只需在配置列表加一行、调用一次函数即可。
  • 减少IO操作:原代码每次复制都打开、保存目标文件,现在只打开一次,所有操作完成后一次性保存,大幅提升效率。
  • 配置化管理映射关系:用列表file_mappings存储每个源文件对应的目标工作表索引,直观清晰,修改或新增映射无需改动核心逻辑。
  • 高效批量读写:使用iter_rows(values_only=True)直接读取单元格值,比逐个调用cell()方法更简洁高效。

内容的提问来源于stack exchange,提问作者P.Costa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 01:57:50