ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

影刀RPA入门:读取Excel数据并循环输出的完整实操指南

影刀RPA入门:读取Excel数据并循环输出的完整实操指南 1. 从手点CtrlV到自动循环影刀RPA解决的是这类恶心事我接触影刀RPA最早是被一个财务同事拉着入坑的。她每个月要处理一百多张Excel表每张表里几十行数据得一条一条复制到网页系统的表单里提交。这活儿干一次要小半天且不能分心一复制错就得从头对账。后来我帮她搭了一个影刀脚本把读取Excel某一行→填到网页→点提交→读下一行这套动作变成全自动的半小时跑完。从那一刻起我就清楚影刀RPA这种工具的定位根本不是程序员才能用的开发框架而是给业务人员准备的自动化遥控器——用指令代替手工操作把重复劳动交给电脑自己去跑。这篇博文是最基础的入门操作用影刀RPA读取Excel表格里的数据再把每一项循环输出。听起来简单但在整个RPA开发里它是绝对的地基。不管以后你要做电商批量上款、财务对账、表格数据录入系统、还是给几十个账户群发消息最终都要落到这套读表→循环→逐条处理的模式上。把这套底子打牢后面写复杂应用会顺很多甚至你会开始主动判断哪些活儿值得写成自动化。适合谁来读完全没碰过RPA的小白已经在用影刀但只会写单次流程、不会循环的人还有想评估RPA到底能不能解决自己手头重复工作的人。我尽量把每一步拆得细一点顺便讲讲踩过的坑。你跟着做完至少能把读取Excel并遍历每一项这个能力彻底拿下。2. 影刀RPA读取Excel的技术思路为什么是流程块指令的组合2.1 影刀RPA的核心运行逻辑影刀RPA的设计思路用一句话概括是把人操作电脑的路径录成指令序列然后反复执行。它的开发界面跟传统编程IDE有很大不同你不需要背语法整条流程是由一个个指令块搭积木式拼出来的。你只需要关注三件事对哪个窗口操作、操作什么内容、操作后怎么处理。这个设计对办公人员非常友好但也暴露了一个问题很多人把它当按键精灵用只学会录制回放一遇到条件判断、循环、变量传递这类逻辑就卡壳。原因在于RPA流程不是线性的录一遍就行而是需要理解数据在指令之间怎么流动。所以我在讲Excel读取之前必须先带大家看清楚影刀RPA的运行骨架。每一条流程都是一个应用应用由流程块组成流程块里放指令。指令可以理解为功能函数Excel指令集封装了打开文档读取单元格获取行数写入单元格等操作你只需要拖过来配置参数。至于循环、判断这种控制指令影刀也帮你封装好了不需要写代码。但这里有一个关键点指令与指令之间不是孤立的它们靠变量来传递数据。比如你读取了一个Excel单元格的内容它会被存进某个变量里下一个指令再从这个变量取值使用。理解这个指令变量的协作模式是掌握RPA的第一个分水岭。2.2 为什么循环是Excel批处理的关键很多人问读取Excel而已直接读取单元格A1读取单元格A2一条条写不就行了表里只有三五行还能应付可一旦数据量到几十行几百行这种写法完全不可维护万一中间漏了一行排查到你怀疑人生。循环的意义正是用一套指令批量处理不同行。影刀RPA支持各种循环形式有按指定次数循环、条件循环、For Each循环等。先从Excel里一次性把整列或整块区域的数据读出来放进一个变量里这个变量类型是数组你可以粗略理解成一个带编号的箱子然后用For Each循环逐个取出箱子里的东西。这个思路要多重要有多重要。你以后写批量业务脚本本质上都在重复同一套逻辑取一个数据→处理→取下一个数据→处理。只不过数据的来源可能从Excel变成了网页、数据库或者API接口。但循环遍历的思想是通用的。2.3 影刀指令封装的成熟度Excel这块做得挺细影刀对Excel操作的封装做得比较完整从打开关闭保存到读取区域设置单元格查找内容都覆盖了。这个封装程度对我这种不喜欢写VBA宏的人特别友好。VBA改Excel虽然功能强大但逻辑写起来累而且Office版本一变就可能出兼容问题。影刀是在Windows外面按下达命令不侵入文档内部跟用鼠标点操作一样的路径兼容性和复用性都好不少。不过影刀读取Excel有一个底层的依赖需要提前搞清楚。它读取Excel数据有两条通路一是通过系统安装的Excel程序本身二是通过内置的ExcelPython处理引擎。这两者有细微差别我在第4章实操部分会详细讲。目前你只需要记住一个原则如果电脑装了Microsoft Office影刀默认走前者如果没装或者装的是WPS可能会走备用方案。不同的通道在读取速度和对公式的支持上会有区别拿不准的时候建议手机做一次简单验证。3. 准备工作搭好影刀、建流程、认识让你少走弯路的界面布局3.1 安装与登录影刀RPA客户端下载安装后需要用账号登录。它会自动运行一个后台服务负责指令的执行。安装过程中有个小坑如果电脑上已经运行着杀毒软件或安全卫士有时候会拦截影刀的服务进程。这不是影刀有什么问题而是自动化工具改鼠标键盘事件容易触发安全软件的敏感规则。遇到这个问题在拦截弹窗里点允许就行不用卸载杀毒软件。安装完成后在主界面左侧找到应用列表点击新建应用。影刀会给你生成一个空流程并自动添加一个主流程块。这个主流程块就是整个自动化任务的入口你的所有指令都从它开始往下跑。3.2 界面功能区域速览影刀客户端打开后界面主要有这几个区域需要记住指令库面板在界面右侧按功能分类展示了所有指令。Excel相关指令集中在Excel分类下面。流程搭建区正中间指令以垂直列表形式堆叠从上往下依次执行。变量管理区通常在左上角或左下角显示当前流程中定义的所有变量。你在指令里创建的新变量都会出现在这里。调试运行区顶部的运行停止调试按钮负责执行和排查流程。输出日志窗口运行过程中打印的状态信息报错了基本都靠它来定位。这三个布局对新手一定要提前认识因为后面设置的参数、创建的变量位置不好找的话多少会让人烦躁。3.3 一个实用的习惯起名规范我见过不少人配置指令时给变量起名叫变量1变量2变量3流程短还好一长连自己都分不清哪是哪。我的习惯是变量名直接用前缀_含义的格式比如读取Excel表格行数就叫excelRowCount循环取出来的当前数据就叫currentData。建议你从初级阶段就养成这个习惯后面维护和排障都会轻松很多。4. 核心实操读取Excel表格数据并循环输出每一项4.1 准备一个示例表格先造一份演示用的数据。在Excel里新建一列标题叫姓名下面依次填入张三李四王五赵六。另起一列叫城市对应填北京上海广州深圳。保存文件路径放到一个你能找到的地方比如D盘根目录文件名建议别带空格影刀对中文路径和表名的兼容性没什么问题但英文和数字的组合最稳。4.2 第一步打开Excel文件从指令库里的Excel分类下拖出打开Excel文件指令到流程搭建区。这个指令有两个关键参数文件路径点击输入框右侧的小文件夹图标选择你刚才的Excel文件。关闭方式通常保持默认等流程运行完再关闭它。因为如果你在一开始就立即关闭后面还没读完数据Excel就被关了流程自然出错。很多初学者在这儿出的第一个问题是先手工把Excel打开了然后再去运行影刀脚本。理论上影刀可以复用已经打开的Excel窗口但为了避免状态不确定——比如Excel正处于编辑状态、弹了个对话框——我建议流程运行时让影刀自己打开文件前面别手动开Excel。流程执行完再统一关闭更稳定。4.3 第二步获取表格的总行数和列数Excel文件打开后下一步要弄清楚表格里有多少行数据才能确定循环要跑几次。有人会觉得多此一举但RPA的特点是程序自己知道跑几遍不是人告诉它跑几遍。一旦表格数据量变化脚本也能自动适应。这里面本质上是把手工确认行数这件事移交给了程序让流程具备动态计算的能力。从Excel指令库里拖出获取行数指令配置参数对象默认为已打开Excel_工作表1。影刀用Excel对象来引用当前操作的Excel实例。如果你同时开了好几个Excel这里就需要指定你要操作的对象。工作表默认取当前激活的工作表。如果你的表格有多张Sheet建议这里显式指定Sheet名比如Sheet1避免运行时切错表。设置一个输出变量命名rowCount类型会自动识别为数字。运行后rowCount就会被赋值为实际行数比如5。列数的获取方式类似拖出获取列数指令输出变量设为colCount。如果你的表结构固定列数不获取也OK但获取了会在后面做循环取数据时有参考价值。4.4 第三步读取整个表格数据区域这一步的核心是一次性读取整块数据而不是一格格去读。从指令库里找读取区域指令配置Excel对象选择前面打开的那个Excel对象。区域范围这里有两种写法。一种是手动输入比如A1:C6另一种是动态计算输入$A$1:$C$ rowCount。我强烈建议你用动态写法因为手动输入行数上限后一旦表格数据增加范围就不对了。影刀的读取区域指令还支持一个连续区域选项它会忽略空单元格只读取有数据的区域。这在数据中间有空格时会很有用但也可能改变你预期中的数据结构暂时可以不用保持默认即可。读取出来的数据被存在一个输出变量里命名为excelData。它的数据类型是一个二维数组相当于把整个表格区域横着掰开再竖着堆起来。第一行是表头姓名城市后面每行是一条记录。4.5 第四步配置循环指令现在你已经有了整块数据接下来要做的是让程序一行一行地把它取出来。从指令库的流程控制分类里拖出For Each数组循环指令到流程中配置循环数组选择excelData。迭代变量系统会自动给一个默认名字我建议改成item。这个循环结构会自动处理数组的遍历。第一轮循环item等于excelData的第一个元素也就是整个二维数组的第一行内容类似[张三,北京]。第二轮循环item换成第二行以此类推。4.6 第五步逐项输出循环配置好之后接下来在循环体内部添加处理指令。每一项在RPA语境下有两种展开方式第一种直接把每一行当成一个整体处理。比如你在日志里打印item就能看到类似[张三,北京]这样的数组结构输出。第二种把一行的每一列单独取出来。这就涉及影刀的一个核心概念——索引。二维数组里的元素可以通过索引定位索引从0开始所以item[0]是姓名item[1]是城市。在循环体内添加数据操作分类下的提取数组元素指令配置源数组选择item。索引填0输出变量命名为name。再添加一个同样的指令索引填1输出变量命名为city。这样每一轮循环中name和city就会被赋予当前行的姓名和城市。如果你后面要对接网页表单直接把name填进账号框、city填进城市框就行。这就是读取Excel每一项对接业务操作的标准姿势。4.7 完整流程长什么样把上面的指令按顺序排好整体流程就是打开Excel文件 → 获取总行数 → 读取数据区域到excelData → For Each数组循环(excelData) → 循环内提取当前行的姓名和城市 → 打印输出 → 结束循环 → 关闭Excel文件你可以先在输出日志确认效果。运行一次日志里应该能看到张三、北京李四、上海王五、广州赵六、深圳依次打印出来。到这一步你其实已经完成了一个最完整的读Excel循环基础组件的搭建。5. 变量绑定和当前行的进阶理解与应用5.1 为什么单独把当前行拿出来讲循环跑起来了很多人的下一个问题是循环里每次拿到的item到底是个什么东西影刀RPA在For Each数组里有一个和当前项高度相关的变量对象你可以在循环体里直接引用它不用再写提取索引那么麻烦。打个比方循环就像快递分拣传送带每次传过来一个包裹这个包裹在影刀里就叫当前项或迭代变量。包裹里有不同格子第一格里是姓名第二格里是城市。你想确认包裹里的内容可以直接打开对应格子去读。这样理解之后后面遇到嵌套循环或复杂一点的数据提取时心就不会慌。因为你始终清楚从数组变量里每次迭代取出来的只是一个局部的当前对象处理完它就换下一个。5.2 二维数组在一维循环中的表现这里要给新手补一个背景知识。二维数组excelData整体长这样[[姓名,城市],[张三,北京],[李四,上海]]For Each数组循环时第一次迭代的item是[姓名,城市]第二次是[张三,北京]。也就是说表和表头混杂在一起。实战中经常需要跳过表头行。处理办法有两种。一种是循环前先删除excelData的第一行可以用数组操作方法把第一个元素去掉另一种是在循环体内判断如果当前行第一个元素等于姓名之类的表头标记就跳过本轮。我自己更推荐第二种因为删数组元素容易手滑把原数据改坏而判断逻辑更直观维护起来也安全。5.3 变量作用域循环内定义的变量出了循环还能用吗影刀RPA的变量分循环内和循环外。循环内新创建的变量比如name和city它们的生命周期跟随循环体。循环结束后你取最后一个name值还能访问到但如果循环体根本没有执行过——比如表格是空的——变量可能没有初始化后续使用时会报变量不存在或空引用错误。一种比较稳妥的兜底做法是在循环开始前给这些变量设置初始值循环里再赋值覆盖。这样就算表格是空的后面的指令也不会直接崩掉。我刚学时踩过一次这个坑Excel空表跑出来直接报索引超出范围加了默认值之后流程就稳多了。6. 常见报错、处理思路和心得备忘6.1 读取不到Excel内容表现流程运行后日志显示打开Excel对象失败或读取区域返回空值。排查要点文件路径是否正确。检查路径里有没有多余空格文件名有没有被系统改过。Excel文件是否被其他程序占用了。如果那个表正开着且处于编辑未保存状态影刀可能拿不到访问权。是否存在多个Excel进程残留。有时候之前异常关闭的Excel进程会锁住文件去任务管理器把所有Excel进程结束后再试。6.2 循环只跑了第一行或者越界表现日志只输出一次或者报数组索引超出范围。这是新手最常踩的坑。原因一般是读取区域范围没写对。比如你表格有5行数据但读取区域写的是A1:C4那最后一行永远读不到。反过来如果范围写的A1:C10而实际只有5行数据读取结果虽然会有空值但不至于报错因为Excel区域本身是合法的。报越界通常是你在循环体内通过索引取值时索引值超过了数组长度。比如item有2个元素你非取item[5]就会越界。检查一下你取的索引跟实际列数是否匹配。6.3 数字读进来变成字符串RPA读Excel时数字大概率会被转成文本。比如Excel里单元格是数字100读出来可能变成100或者100.0。如果你后面要拿这个值和程序里其他参数做计算或比较会出现类型不一致的情况。解决办法是用影刀的数据操作指令做类型转换。把字符串转整数、转浮点数再使用。哪怕你的业务暂时不需要计算也建议养成习惯读取数值类字段后立刻明确数据类型后面接网页表单或数据库时能少踩很多坑。6.4 循环里操作Excel本身容易引发版本冲突如果你在循环体里写入Excel——比如每处理一行数据就写一个已处理标记——每次写入都会触发Excel对象的重算或刷新。当表格很大时运行速度会明显下降甚至卡死。我的建议是尽量先读完数据处理完再把结果批次写回表格。不要在循环里频繁做写入操作。如果一定要写可以把写入指令放在循环结束后一次性更新整列。6.5 记住这个常见问题速查表现象大概率原因处理思路打开Excel失败文件被占用、路径错误关闭手工打开的Excel检查路径读取区域为空区域范围写错改用动态行数拼接范围循环只跑一次For Each数组配置错误确认循环数组选的是excelData整体不是单行越界报错索引超出数组长度检查列数确认索引从0开始数字变字符串默认类型转换用数据操作指令显式转换流程跑得特别慢循环内频繁写Excel改为批次写入或循环外统一处理6.6 一点调试技巧影刀有调试模式可以在流程任意指令处打断点运行到断点时查看当前变量的实际值。我调试循环时最喜欢在循环体第一行打一个断点然后看item的值是否符合预期。这一步只花10秒钟但能帮你省下大量猜流程逻辑的时间。还有一个管用的技巧把日志输出指令放满关键节点。比如打开Excel后输出文件打开成功获取行数后输出行数xxx。日志打得足够多报错的时候你基本一眼就能定位是哪一步出了问题。日志输出不要舍不得跑顺手了再删都行。7. 从这段JavaScript往后的扩展方向做到读取Excel并循环输出每一项之后你手头其实已经握着一把万能钥匙。最常见的扩展方向有这几个我根据个人经验简单列一下如果目标是做数据录入循环体内加网页自动化指令把name和city填进系统表单提交之后点确认或翻页再继续处理下一行。如果目标是做数据清洗循环体内加条件判断比如遇到城市为空的记录就跳过或者在日志里标记出来。Excel只是数据源循环内的处理逻辑可以无限细分。如果目标是做批量报表分发循环体内加邮件或消息发送指令每次取出一行把该行数据拼成正文或附件发给对应的人。如果目标是做跨表合并用影刀读取多个Excel文件分别循环遍历把数据攒到一个统一的数组或新表里。这个用得也很多尤其是汇总各地上报数据。如果目标是做拼多多、淘宝这类电商平台的上架批量操作思路也是一模一样的。商品信息在Excel里读取后循环每条商品执行一次新建商品→填标题→传图→填价格→提交的网页操作流程。这也是目前影刀RPA社区里需求量非常大的一类场景。所以你会发现读取Excel并循环本身不属于某个行业而是一种通用的批量处理范式。任何重复性劳动只要数据源头能落到表格里基本都能套用这套流程。我个人在实际操作中的体会是RPA的学习曲线其实很平缓真正的门槛在于愿意把事情拆成步骤并理解数据在步骤之间怎么流动。第一次写循环可能有点绕等你亲手把一张五行的表循环跑通一次后面再复杂的自动化流程脑子里都会自动浮现出读取数据→循环→逐条处理的骨架。这个基础操作真的值得你耐下心多练两遍。
返回列表