当前位置: 首页 > news >正文

影刀RPA Excel多表合并:跨文件跨Sheet数据整合


title: “影刀RPA Excel多表合并:跨文件跨Sheet数据整合”
date: 2026-07-01
author: 林焱

影刀RPA Excel多表合并:跨文件跨Sheet数据整合

每个分公司提交一个Excel,每个月一个文件,每个人一个Sheet……汇总的时候要一个个打开复制,费时费力还容易出错。影刀一键合并所有文件,5分钟的活变成30秒。

什么情况用什么

必须用合并功能的场景:

  • 多个分公司提交相同格式的报表,需要合并

  • 同一文件有多个Sheet,需要合并成一张表

  • 历史数据按月存放,需要合并做年度分析

  • 多系统导出的数据格式相同,需要汇总

不适合的场景:

  • 每个文件格式都不一样,合并前需要大量清洗
  • 文件数量很少(2-3个),手动复制更快

怎么做

拼多多店群自动化报活动上架!

方法1:合并同一文件夹内所有Excel(最常用)

【影刀操作】

  1. 新建流程「Excel文件夹合并」
  2. 添加【Python】指令
    importpandasaspdimportosimportglob folder_path=r'C:\分公司报表\2024年6月'output_path=r'C:\汇总报表\2024年6月汇总.xlsx'# 找到所有Excel文件excel_files=glob.glob(os.path.join(folder_path,'*.xlsx'))excel_files+=glob.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:filename=os.path.basename(file_path)try:df=pd.read_excel(file_path,sheet_name=0)# 读取第一个Sheet# 过滤空行df.dropna(how='all',inplace=True)# 添加来源文件名列,便于追踪df['来源文件']=filename all_dfs.append(df)print(f' 已读取:{filename}{len(df)}行')exceptExceptionase:print(f' 读取失败:{filename},原因:{e}')failed_files.append(filename)ifnotall_dfs:raiseValueError('没有成功读取任何文件')# 合并所有数据merged_df=pd.concat(all_dfs,ignore_index=True)# 去重(按关键字段)# merged_df.drop_duplicates(subset=['订单编号'], keep='first', inplace=True)print(f'合并完成:共{len(merged_df)}行')# 保存merged_df.to_excel(output_path,index=False,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

【影刀操作】

  1. 添加【Python】指令
    importpandasaspd file_path=r'C:\报表\各部门年度数据.xlsx'# 读取所有Sheetexcel_file=pd.ExcelFile(file_path)sheet_names=excel_file.sheet_namesprint(f'共有{len(sheet_names)}个Sheet:{sheet_names}')# 排除汇总Sheet(如果有的话)data_sheets=[sforsinsheet_namesifsnotin['总汇总','说明','README']]all_dfs=[]forsheet_nameindata_sheets:df=pd.read_excel(file_path,sheet_name=sheet_name,header=0)df.dropna(how='all',inplace=True)iflen(df)==0:print(f' 跳过空Sheet:{sheet_name}')continuedf['Sheet来源']=sheet_name all_dfs.append(df)print(f' Sheet{sheet_name}{len(df)}行')merged=pd.concat(all_dfs,ignore_index=True)# 写回到原文件的新Sheetwithpd.ExcelWriter(file_path,engine='openpyxl',mode='a',if_sheet_exists='replace')aswriter:merged.to_excel(writer,sheet_name='总汇总',index=False)print(f'合并完成,共{len(merged)}行,已写入"总汇总"Sheet')

方法3:按月自动汇总历史数据

【影刀操作】

  1. 添加【Python】指令
    importpandasaspdimportos# 合并2024年全年数据base_folder=r'C:\月度报表'months=[f'2024年{m}月'forminrange(1,13)]all_dfs=[]formonthinmonths:month_folder=os.path.join(base_folder,month)ifnotos.path.exists(month_folder):print(f'目录不存在:{month_folder},跳过')continueforfilenameinos.listdir(month_folder):ifnotfilename.endswith(('.xlsx','.xls')):![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/87e6f570794a45949f4d756efaceb880.png#pic_center)continuefile_path=os.path.join(month_folder,filename)try:df=pd.read_excel(file_path)df['月份']=month df['来源']=filename all_dfs.append(df)exceptExceptionase:print(f'读取失败:{file_path}{e}')ifall_dfs:annual_df=pd.concat(all_dfs,ignore_index=True)annual_df.to_excel(r'C:\月度报表\2024年全年汇总.xlsx',index=False)print(f'年度汇总完成:共{len(annual_df)}行')

方法4:列名不一致的文件合并(字段映射)

各分公司的表头叫法不同,合并前先统一列名。

【影刀操作】

  1. 添加【Python】指令
    importpandasaspd# 字段映射表:把各种叫法统一成标准字段名column_mapping={'销售金额':'销售额','销售额(元)':'销售额','sales_amount':'销售额','商品名':'产品名称','产品名':'产品名称','product_name':'产品名称','客户名':'客户名称','买家':'客户名称',}# 必须有的列(合并后验证)required_columns=['销售额','产品名称','客户名称']df=pd.read_excel(r'C:\分公司A\数据.xlsx')# 重命名列df.rename(columns=column_mapping,inplace=True)# 检查必填列是否都有missing_cols=[cforcinrequired_columnsifcnotindf.columns]ifmissing_cols:print(f'警告:缺少必填列:{missing_cols}')print(f'当前列名:{list(df.columns)}')

有什么坑

坑1:表头在第几行不确定

有些文件前几行是说明或空行,真正的表头在第3行。

解决方法:指定header参数:pd.read_excel(file, header=2)从第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,核心是处理好三个问题:文件格式不一致(列名映射)、数据质量(去重+去空行)、合并后验证(总行数、关键列非空)。把这三步做扎实,再多的表都能稳定合并。

http://www.jsqmd.com/news/1152062/

相关文章:

  • 做线上运营总不见效?专业营销策划团队到底能帮企业解决什么问题
  • 为什么92%的电商团队在SD模型选型上踩坑?(附Shopify/TikTok Shop/拼多多平台适配评分表)
  • 第 0 课:LangChain 学习路线与环境准备
  • 第 05 课:记忆与流式传输
  • 【claude code实践】让 Claude Code 分析依赖:理解项目中的关键包与调用链
  • SEGGER RTT 7.96 多通道配置实战:3通道独立输出日志、数据与命令
  • 本地部署开源物联网平台 ThingsBoard 并实现外部访问( Linux 版本)
  • 2026大理黄金回收白银回收铂金回收中检持证鉴定师铂金银饰高价回收门店联系方式推荐
  • AI催生新岗位“botsitting”,大学生入行正当时,未来或成常态岗位
  • TabDDPM 实战:在 15 个基准数据集上超越 GAN/VAE,ML 效率提升 5% 以上
  • 急购必看!国产拉链拉力机选型三大误区别再犯
  • AI工具Codex实战:外贸客户开发自动化,电梯行业精准获客85家
  • 【claude code实践】用 Claude Code 阅读陌生代码库:从入口文件到核心流程
  • 地平线开发岗面试题目
  • 为什么顶尖Angular团队已停用手写Component?Cursor AI生成代码通过SonarQube 98.2%质量阈值,你还在等什么?
  • Cursor AI生成的Angular组件如何通过NgRx状态流校验?一线架构师亲测的5层验证协议首次公开
  • 2026最新:适合内容创作者的5款免费实用B站UP主视频总结工具
  • 腾讯 Hy3 发布:阶段性成果初现,离终局答案还有多远?
  • 橡果教育整理发布《注塑模具技术要求》指导手册,陈工深度解读:一套好的模具,从设计到交付需要把控哪些技术细节?
  • NSK SFT8016-5 超重载管循环滚珠丝杠详析
  • CoT效果提升300%的关键变量,深度解析温度值、分解粒度与回溯深度的协同机制
  • 字节EdgeBench评测项目:揭示Agent学习规律,推动AI评测范式跨越
  • 3类气敏传感器对比:半导体式(MQ-4)、催化燃烧式、红外式原理与选型指南
  • Stable Diffusion电商AB测试实战:同一商品图点击率提升27.4%的关键控制变量(附ControlNet光照一致性校准方案)
  • FP-Tree算法内存优化:3个技巧应对千万级事务数据挖掘
  • WT2606Ax离在线语音识别芯片:35国语言200+方言方案设计
  • 浏览器插件安全与隐私分析:以摸鱼王为例的5项本地存储检查
  • 紧急预警:当前93%的Few-shot提示词存在隐式偏见泄漏!立即启用这6个可解释性审计检查点
  • PE文件结构解析实战:3种节表注入技术对比与手动实现
  • 影刀RPA Excel操作的十大翻车现场