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
相关产品推荐
相关产品推荐

