title: “影刀RPA Excel多表合并跨文件跨Sheet数据整合”date: 2026-07-01author: 林焱影刀RPA Excel多表合并跨文件跨Sheet数据整合每个分公司提交一个Excel每个月一个文件每个人一个Sheet……汇总的时候要一个个打开复制费时费力还容易出错。影刀一键合并所有文件5分钟的活变成30秒。什么情况用什么必须用合并功能的场景多个分公司提交相同格式的报表需要合并同一文件有多个Sheet需要合并成一张表历史数据按月存放需要合并做年度分析多系统导出的数据格式相同需要汇总不适合的场景每个文件格式都不一样合并前需要大量清洗文件数量很少2-3个手动复制更快怎么做拼多多店群自动化报活动上架方法1合并同一文件夹内所有Excel最常用【影刀操作】新建流程「Excel文件夹合并」添加【Python】指令importpandasaspdimportosimportglob folder_pathrC:\分公司报表\2024年6月output_pathrC:\汇总报表\2024年6月汇总.xlsx# 找到所有Excel文件excel_filesglob.glob(os.path.join(folder_path,*.xlsx))excel_filesglob.glob(os.path.join(folder_path,*.xls))ifnotexcel_files:raiseFileNotFoundError(f未找到Excel文件{folder_path})print(f找到{len(excel_files)}个文件)all_dfs[]failed_files[]forfile_pathinexcel_files:filenameos.path.basename(file_path)try:dfpd.read_excel(file_path,sheet_name0)# 读取第一个Sheet# 过滤空行df.dropna(howall,inplaceTrue)# 添加来源文件名列便于追踪df[来源文件]filename all_dfs.append(df)print(f 已读取{filename}{len(df)}行)exceptExceptionase:print(f 读取失败{filename}原因{e})failed_files.append(filename)ifnotall_dfs:raiseValueError(没有成功读取任何文件)# 合并所有数据merged_dfpd.concat(all_dfs,ignore_indexTrue)# 去重按关键字段# merged_df.drop_duplicates(subset[订单编号], keepfirst, inplaceTrue)print(f合并完成共{len(merged_df)}行)# 保存merged_df.to_excel(output_path,indexFalse,sheet_name汇总数据)# 保存失败文件列表iffailed_files:error_info\n.join(failed_files)print(f以下文件读取失败\n{error_info})yda.set_variable(merge_count,len(merged_df))yda.set_variable(failed_files,str(failed_files))方法2合并同一文件的多个Sheet【影刀操作】添加【Python】指令importpandasaspd file_pathrC:\报表\各部门年度数据.xlsx# 读取所有Sheetexcel_filepd.ExcelFile(file_path)sheet_namesexcel_file.sheet_namesprint(f共有{len(sheet_names)}个Sheet{sheet_names})# 排除汇总Sheet如果有的话data_sheets[sforsinsheet_namesifsnotin[总汇总,说明,README]]all_dfs[]forsheet_nameindata_sheets:dfpd.read_excel(file_path,sheet_namesheet_name,header0)df.dropna(howall,inplaceTrue)iflen(df)0:print(f 跳过空Sheet{sheet_name})continuedf[Sheet来源]sheet_name all_dfs.append(df)print(f Sheet{sheet_name}{len(df)}行)mergedpd.concat(all_dfs,ignore_indexTrue)# 写回到原文件的新Sheetwithpd.ExcelWriter(file_path,engineopenpyxl,modea,if_sheet_existsreplace)aswriter:merged.to_excel(writer,sheet_name总汇总,indexFalse)print(f合并完成共{len(merged)}行已写入总汇总Sheet)方法3按月自动汇总历史数据【影刀操作】添加【Python】指令importpandasaspdimportos# 合并2024年全年数据base_folderrC:\月度报表months[f2024年{m}月forminrange(1,13)]all_dfs[]formonthinmonths:month_folderos.path.join(base_folder,month)ifnotos.path.exists(month_folder):print(f目录不存在{month_folder}跳过)continueforfilenameinos.listdir(month_folder):ifnotfilename.endswith((.xlsx,.xls)):continuefile_pathos.path.join(month_folder,filename)try:dfpd.read_excel(file_path)df[月份]month df[来源]filename all_dfs.append(df)exceptExceptionase:print(f读取失败{file_path}{e})ifall_dfs:annual_dfpd.concat(all_dfs,ignore_indexTrue)annual_df.to_excel(rC:\月度报表\2024年全年汇总.xlsx,indexFalse)print(f年度汇总完成共{len(annual_df)}行)方法4列名不一致的文件合并字段映射各分公司的表头叫法不同合并前先统一列名。【影刀操作】添加【Python】指令importpandasaspd# 字段映射表把各种叫法统一成标准字段名column_mapping{销售金额:销售额,销售额(元):销售额,sales_amount:销售额,商品名:产品名称,产品名:产品名称,product_name:产品名称,客户名:客户名称,买家:客户名称,}# 必须有的列合并后验证required_columns[销售额,产品名称,客户名称]dfpd.read_excel(rC:\分公司A\数据.xlsx)# 重命名列df.rename(columnscolumn_mapping,inplaceTrue)# 检查必填列是否都有missing_cols[cforcinrequired_columnsifcnotindf.columns]ifmissing_cols:print(f警告缺少必填列{missing_cols})print(f当前列名{list(df.columns)})有什么坑坑1表头在第几行不确定有些文件前几行是说明或空行真正的表头在第3行。解决方法指定header参数pd.read_excel(file, header2)从第3行索引2开始读。坑2合并后总行数对不上某个文件里有重复数据合并后总数大于预期。TEMU店群矩阵自动化运营核价报活动解决方法合并后做去重df.drop_duplicates(subset[唯一标识列])坑3数字被读成字符串Excel里的数字格式是文本格式读进来是字符串1,234.56不能直接计算。解决方法df[销售额]df[销售额].astype(str).str.replace(,,).str.replace(元,).astype(float)坑4文件正在被别人打开读取共享盘上的文件时别人正在编辑读取报错。解决方法捕获异常等10秒重试或者只读取文件不写入不会冲突。实战经验某连锁超市30家门店每天上传销售Excel总部汇总。做法用影刀监控文件夹新文件到达就触发合并流程每天早上9点前汇总报表自动发到总部群里。总结Excel多表合并首选Pandas核心是处理好三个问题文件格式不一致列名映射、数据质量去重去空行、合并后验证总行数、关键列非空。把这三步做扎实再多的表都能稳定合并。
影刀RPA Excel多表合并:跨文件跨Sheet数据整合
title: “影刀RPA Excel多表合并跨文件跨Sheet数据整合”date: 2026-07-01author: 林焱影刀RPA Excel多表合并跨文件跨Sheet数据整合每个分公司提交一个Excel每个月一个文件每个人一个Sheet……汇总的时候要一个个打开复制费时费力还容易出错。影刀一键合并所有文件5分钟的活变成30秒。什么情况用什么必须用合并功能的场景多个分公司提交相同格式的报表需要合并同一文件有多个Sheet需要合并成一张表历史数据按月存放需要合并做年度分析多系统导出的数据格式相同需要汇总不适合的场景每个文件格式都不一样合并前需要大量清洗文件数量很少2-3个手动复制更快怎么做拼多多店群自动化报活动上架方法1合并同一文件夹内所有Excel最常用【影刀操作】新建流程「Excel文件夹合并」添加【Python】指令importpandasaspdimportosimportglob folder_pathrC:\分公司报表\2024年6月output_pathrC:\汇总报表\2024年6月汇总.xlsx# 找到所有Excel文件excel_filesglob.glob(os.path.join(folder_path,*.xlsx))excel_filesglob.glob(os.path.join(folder_path,*.xls))ifnotexcel_files:raiseFileNotFoundError(f未找到Excel文件{folder_path})print(f找到{len(excel_files)}个文件)all_dfs[]failed_files[]forfile_pathinexcel_files:filenameos.path.basename(file_path)try:dfpd.read_excel(file_path,sheet_name0)# 读取第一个Sheet# 过滤空行df.dropna(howall,inplaceTrue)# 添加来源文件名列便于追踪df[来源文件]filename all_dfs.append(df)print(f 已读取{filename}{len(df)}行)exceptExceptionase:print(f 读取失败{filename}原因{e})failed_files.append(filename)ifnotall_dfs:raiseValueError(没有成功读取任何文件)# 合并所有数据merged_dfpd.concat(all_dfs,ignore_indexTrue)# 去重按关键字段# merged_df.drop_duplicates(subset[订单编号], keepfirst, inplaceTrue)print(f合并完成共{len(merged_df)}行)# 保存merged_df.to_excel(output_path,indexFalse,sheet_name汇总数据)# 保存失败文件列表iffailed_files:error_info\n.join(failed_files)print(f以下文件读取失败\n{error_info})yda.set_variable(merge_count,len(merged_df))yda.set_variable(failed_files,str(failed_files))方法2合并同一文件的多个Sheet【影刀操作】添加【Python】指令importpandasaspd file_pathrC:\报表\各部门年度数据.xlsx# 读取所有Sheetexcel_filepd.ExcelFile(file_path)sheet_namesexcel_file.sheet_namesprint(f共有{len(sheet_names)}个Sheet{sheet_names})# 排除汇总Sheet如果有的话data_sheets[sforsinsheet_namesifsnotin[总汇总,说明,README]]all_dfs[]forsheet_nameindata_sheets:dfpd.read_excel(file_path,sheet_namesheet_name,header0)df.dropna(howall,inplaceTrue)iflen(df)0:print(f 跳过空Sheet{sheet_name})continuedf[Sheet来源]sheet_name all_dfs.append(df)print(f Sheet{sheet_name}{len(df)}行)mergedpd.concat(all_dfs,ignore_indexTrue)# 写回到原文件的新Sheetwithpd.ExcelWriter(file_path,engineopenpyxl,modea,if_sheet_existsreplace)aswriter:merged.to_excel(writer,sheet_name总汇总,indexFalse)print(f合并完成共{len(merged)}行已写入总汇总Sheet)方法3按月自动汇总历史数据【影刀操作】添加【Python】指令importpandasaspdimportos# 合并2024年全年数据base_folderrC:\月度报表months[f2024年{m}月forminrange(1,13)]all_dfs[]formonthinmonths:month_folderos.path.join(base_folder,month)ifnotos.path.exists(month_folder):print(f目录不存在{month_folder}跳过)continueforfilenameinos.listdir(month_folder):ifnotfilename.endswith((.xlsx,.xls)):continuefile_pathos.path.join(month_folder,filename)try:dfpd.read_excel(file_path)df[月份]month df[来源]filename all_dfs.append(df)exceptExceptionase:print(f读取失败{file_path}{e})ifall_dfs:annual_dfpd.concat(all_dfs,ignore_indexTrue)annual_df.to_excel(rC:\月度报表\2024年全年汇总.xlsx,indexFalse)print(f年度汇总完成共{len(annual_df)}行)方法4列名不一致的文件合并字段映射各分公司的表头叫法不同合并前先统一列名。【影刀操作】添加【Python】指令importpandasaspd# 字段映射表把各种叫法统一成标准字段名column_mapping{销售金额:销售额,销售额(元):销售额,sales_amount:销售额,商品名:产品名称,产品名:产品名称,product_name:产品名称,客户名:客户名称,买家:客户名称,}# 必须有的列合并后验证required_columns[销售额,产品名称,客户名称]dfpd.read_excel(rC:\分公司A\数据.xlsx)# 重命名列df.rename(columnscolumn_mapping,inplaceTrue)# 检查必填列是否都有missing_cols[cforcinrequired_columnsifcnotindf.columns]ifmissing_cols:print(f警告缺少必填列{missing_cols})print(f当前列名{list(df.columns)})有什么坑坑1表头在第几行不确定有些文件前几行是说明或空行真正的表头在第3行。解决方法指定header参数pd.read_excel(file, header2)从第3行索引2开始读。坑2合并后总行数对不上某个文件里有重复数据合并后总数大于预期。TEMU店群矩阵自动化运营核价报活动解决方法合并后做去重df.drop_duplicates(subset[唯一标识列])坑3数字被读成字符串Excel里的数字格式是文本格式读进来是字符串1,234.56不能直接计算。解决方法df[销售额]df[销售额].astype(str).str.replace(,,).str.replace(元,).astype(float)坑4文件正在被别人打开读取共享盘上的文件时别人正在编辑读取报错。解决方法捕获异常等10秒重试或者只读取文件不写入不会冲突。实战经验某连锁超市30家门店每天上传销售Excel总部汇总。做法用影刀监控文件夹新文件到达就触发合并流程每天早上9点前汇总报表自动发到总部群里。总结Excel多表合并首选Pandas核心是处理好三个问题文件格式不一致列名映射、数据质量去重去空行、合并后验证总行数、关键列非空。把这三步做扎实再多的表都能稳定合并。