news 2026/6/26 20:03:37

影刀RPA多工作簿协同:跨Excel文件数据流转

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
影刀RPA多工作簿协同:跨Excel文件数据流转

影刀RPA多工作簿协同:跨Excel文件数据流转

作者:林焱

实际工作中数据往往分散在多个Excel文件中。本文详解跨工作簿的数据读取、合并、同步和联动,帮你构建多文件协同自动化体系。


前言:多工作簿协同的痛点

场景人工操作痛点
月度报表合并打开12个文件逐个复制耗时长、易出错
多部门数据汇总邮件收集→手动合并版本混乱
主数据+明细表关联VLOOKUP跨文件文件路径变化就出错
多文件数据同步逐个打开更新效率极低

第一章:多文件批量读取

1.1 遍历文件夹读取所有Excel

importosimportglobimportpandasaspddefread_all_excels(folder_path,pattern="*.xlsx"):"""批量读取文件夹中所有Excel"""files=glob.glob(os.path.join(folder_path,pattern))all_data=[]file_summary=[]forfile_pathinfiles:try:# 读取所有工作表xl_file=pd.ExcelFile(file_path)forsheet_nameinxl_file.sheet_names:df=pd.read_excel(file_path,sheet_name=sheet_name)df["_source_file"]=os.path.basename(file_path)df["_source_sheet"]=sheet_name all_data.append(df)file_summary.append({"file":os.path.basename(file_path),[video(video-PgSADRtE-1782425713809)(type-csdn)(url-https://live.csdn.net/v/embed/525010)(image-https://v-blog.csdnimg.cn/asset/f4faa587144cb7070f19e8b36813806b/cover/Cover0.jpg)(title-店群矩阵自动化突破运营极限!)][video(video-lxKxJrch-1782425720493)(type-csdn)(url-https://live.csdn.net/v/embed/524992)(image-https://v-blog.csdnimg.cn/asset/b59aed2f01d4fe8583467562aaf4dcfd/cover/Cover0.jpg)(title-temu店群自动化报活动案例)]"sheets":len(xl_file.sheet_names),"status":"success"})exceptExceptionase:file_summary.append({"file":os.path.basename(file_path),"status":"failed","error":str(e)})# 合并所有数据ifall_data:merged=pd.concat(all_data,ignore_index=True)returnmerged,file_summaryreturnNone,file_summary# 使用data,summary=read_all_excels(r"C:\数据\2024年3月")print(f"合并完成:{len(data)}行数据")

1.2 按文件名模式智能读取

defsmart_read_by_pattern(folder_path):"""按文件名模式智能读取"""importre files={}forfinos.listdir(folder_path):ifnotf.endswith(('.xlsx','.xls')):continue# 提取日期(如:销售数据2024-03-15.xlsx)date_match=re.search(r'(\d{4}[-_]?\d{2}[-_]?\d{2})',f)ifdate_match:date_str=date_match.group(1)files[date_str]=os.path.join(folder_path,f)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b65857c5676e43cead31e104ad2d69ad.png#pic_center)# 按日期排序sorted_files=sorted(files.items(),key=lambdax:x[0])results=[]fordate,pathinsorted_files:df=pd.read_excel(path)df["_date"]=date results.append(df)returnpd.concat(results,ignore_index=True)

第二章:多工作簿数据合并

2.1 横向合并(按共同列)

defmerge_by_key(file_list,key_column):"""按关键列横向合并多个文件"""# 读取第一个文件作为基础base_df=pd.read_excel(file_list[0])forfile_pathinfile_list[1:]:df=pd.read_excel(file_path)# 按关键列合并base_df=pd.merge(base_df,df,on=key_column,how='outer',# 保留所有记录suffixes=('',f"_{os.path.basename(file_path)}"))returnbase_df

2.2 纵向追加(相同结构)

defappend_all(folder_path,output_path):"""纵向追加所有文件"""all_dfs=[]forfileinos.listdir(folder_path):ifnotfile.endswith(('.xlsx','.xls')):continuefile_path=os.path.join(folder_path,file)df=pd.read_excel(file_path)# 添加来源信息df["数据来源"]=filedf["导入时间"]=datetime.now().strftime("%Y-%m-%d %H:%M")all_dfs.append(df)# 合并result=pd.concat(all_dfs,ignore_index=True)# 去重before=len(result)result=result.drop_duplicates()after=len(result)# 保存result.to_excel(output_path,index=False)print(f"合并完成:{before}{after}行(去重后)")returnresult

第三章:跨文件数据关联

3.1 主表+明细表关联

deflink_master_detail(master_path,detail_folder):"""主表与多个明细表关联"""# 读取主表master=pd.read_excel(master_path)# 遍历所有明细文件forfileinos.listdir(detail_folder):ifnotfile.endswith('.xlsx'):continuedetail=pd.read_excel(os.path.join(detail_folder,file))# 按客户ID关联merged=pd.merge(master,detail[["客户ID","订单金额","订单日期"]],on="客户ID",how="left")# 计算汇总summary=merged.groupby("客户ID").agg({"订单金额":"sum","订单日期":"count"}).rename(columns={"订单日期":"订单数量"})# 写回主表master=master.set_index("客户ID")master.update(summary)master=master.reset_index()returnmaster

3.2 VLOOKUP跨文件实现

defcross_file_vlookup(lookup_file,lookup_col,source_folder,source_col,result_col):"""模拟VLOOKUP跨文件查询"""# 读取待查询数据df=pd.read_excel(lookup_file)# 遍历所有源文件建立查询字典lookup_dict={}forfileinos.listdir(source_folder):ifnotfile.endswith('.xlsx'):continuesource_df=pd.read_excel(os.path.join(source_folder,file))for_,rowinsource_df.iterrows():key=row[source_col]value=row[result_col]lookup_dict[key]=value# 执行查询df["查询结果"]=df[lookup_col].map(lookup_dict)returndf

第四章:多文件数据同步

4.1 变更检测与增量同步

importhashlibclassExcelSync:"""Excel文件同步器"""def__init__(self,source_dir,target_dir):self.source_dir=source_dir self.target_dir=target_dir self.snapshot_file=os.path.join(target_dir,".snapshot.json")self.snapshot=self._load_snapshot()def_load_snapshot(self):"""加载文件快照"""ifos.path.exists(self.snapshot_file):withopen(self.snapshot_file,"r")asf:returnjson.load(f)return{}def_file_hash(self,file_path):"""计算文件哈希"""hasher=hashlib.md5()withopen(file_path,"rb")asf:buf=f.read(65536)whilelen(buf)>0:hasher.update(buf)buf=f.read(65536)returnhasher.hexdigest()defcheck_changes(self):"""检测变更文件"""changed=[]new_files=[]forfileinos.listdir(self.source_dir):ifnotfile.endswith(('.xlsx','.xls')):continuesource_path=os.path.join(self.source_dir,file)file_hash=self._file_hash(source_path)iffilenotinself.snapshot:new_files.append(file)elifself.snapshot[file]!=file_hash:changed.append(file)# 更新快照self.snapshot[file]=file_hashreturn{"changed":changed,"new":new_files}defsync(self):"""执行同步"""changes=self.check_changes()forfileinchanges["changed"]+changes["new"]:source=os.path.join(self.source_dir,file)target=os.path.join(self.target_dir,file)shutil.copy2(source,target)print(f"已同步:{file}")# 保存快照withopen(self.snapshot_file,"w")asf:json.dump(self.snapshot,f)returnchanges

第五章:实战案例——销售报表自动合并

defauto_merge_sales_reports():"""自动合并各区域销售报表"""# 1. 扫描各区域报表regions=["华北","华东","华南","西南"]all_data=[]forregioninregions:folder=f"报表\\{region}"forfileinos.listdir(folder):iffile.endswith('.xlsx'):df=pd.read_excel(os.path.join(folder,file))df["区域"]=region df["文件名"]=fileall_data.append(df)# 2. 合并merged=pd.concat(all_data,ignore_index=True)# 3. 数据清洗# 金额列统一merged["销售金额"]=pd.to_numeric(merged["销售金额"],errors="coerce")# 日期列统一merged["销售日期"]=pd.to_datetime(merged["销售日期"],errors="coerce")# 4. 汇总分析summary=merged.groupby(["区域","销售员"]).agg({"销售金额":["sum","mean","count"],"销售日期":["min","max"]}).round(2)# 5. 输出withpd.ExcelWriter("销售合并报表.xlsx")aswriter:merged.to_excel(writer,sheet_name="明细数据",index=False)summary.to_excel(writer,sheet_name="汇总分析")print(f"合并完成:{len(merged)}行,{len(regions)}个区域")

第六章:影刀RPA中的多文件操作

6.1 使用影刀指令批量处理

流程:多Excel合并 ├── 1. 文件操作-列出文件夹文件 │ 参数:文件夹路径 = "C:\数据" │ 输出:file_list │ ├── 2. 循环-ForEach │ 列表:file_list │ 循环变量:current_file │ │ │ ├── 2.1 Excel-打开工作簿 │ │ 文件路径:current_file │ │ │ ├── 2.2 Excel-读取所有数据 │ │ 输出:sheet_data │ │ │ └── 2.3 列表-添加元素 │ 列表:all_data │ 元素:sheet_data │ ├── 3. Excel-新建工作簿 │ ├── 4. Excel-写入数据 │ 数据:all_data │ └── 5. Excel-保存 文件路径:"C:\输出\合并结果.xlsx"

结语

多工作簿协同的核心原则:

  1. 路径动态化:不用硬编码路径,用文件夹扫描
  2. 结构标准化:各文件列名和结构尽量统一
  3. 增量同步:只处理变更文件,提升效率
  4. 快照比对:用哈希检测文件是否真的变化

一句话:让数据在文件间自由流转,人就不用再做"人肉ETL"了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 19:56:23

智能在线预约挂号系统

选题背景 随着信息技术的飞速发展和“互联网”战略的深入推进,传统医疗服务模式正经历着一场深刻的数字化转型。智能在线预约挂号系统作为连接患者与医疗资源的核心枢纽,其研发与应用具有显著的时代紧迫性和广泛的社会价值。本选题的提出,主要…

作者头像 李华
网站建设 2026/6/26 19:52:08

海门科技公司网站怎么做,这几点很关键!

科技类企业和普通工厂不一样,官网主要用来对接企业客户,树立技术形象,不能套用普通模板网站。网站整体外观一定要简洁大气。花里胡哨的装修会显得很不专业,冷色调、干净的版面更贴合科技行业,南通万嘉定制设计会比通用…

作者头像 李华
网站建设 2026/6/26 19:49:21

听说很多GEO工具数据不准白花钱,哪个更靠谱啊?

2026年GEO工具投诉涨89%:数据不准致预算浪费?选购风险规避清单直接用 本文作者:瀚界GEO行业研究中心分析师 本文适用于年预算5万以上的中大型企业GEO工具采购评估场景,可直接用于内部选型论证、供应商资质核验全流程。 2026年国…

作者头像 李华
网站建设 2026/6/26 19:48:12

BurpSuite被动扫描插件组合实战:构建分层感知体系提升漏洞挖掘效率

1. 项目概述:为什么被动扫描插件组合是效率翻倍的关键在渗透测试和漏洞挖掘的日常里,BurpSuite 就像是我们手里的瑞士军刀,功能强大但有时候也略显笨重。尤其是主动扫描,动静大、耗时长,还容易触发目标系统的防护机制。…

作者头像 李华
网站建设 2026/6/26 19:46:37

树莓派IP地址查找全攻略:从DHCP原理到网络扫描实战

1. 树莓派IP地址查找:从入门到精通的完整指南 刚拿到树莓派,或者把它扔在某个角落吃灰一段时间后,最常遇到的一个问题就是:我怎么连上它?无论是想通过SSH进行远程管理,还是用VNC连接桌面,第一步…

作者头像 李华