
影刀RPA实操指南考勤数据汇总——打卡记录自动统计月度报表每月一号最折磨行政的不是发工资是做考勤。人事系统导出来的打卡记录动辄几千行迟到、早退、缺卡、加班全混在一起用Excel函数筛一天还得防着自己把公式拖错行。我做了两年多影刀RPA考勤汇总是我给公司做的第一个流程现在每月一号上午九点自动跑完我只需要看一眼飞书里的结果通知。这篇文章把整套做法拆开讲清楚从安装到定时任务零基础也能照着搭出来。先说结论考勤汇总这个活本质上是三件事——把打卡记录读进来、按规则判定异常、把结果写回一张月度报表。影刀RPA处理这三件事各有对应的指令全程不需要写一行代码用可视化流程拖拽就能完成。你唯一的准备工作是搞清楚自己公司考勤制度的判定规则比如几点算迟到、缺卡几天要扣款这些规则才是流程的核心指令只是搬运工。如果你还没装过影刀RPA去官网下载社区版安装包双击下一步就能装完桌面端首次打开需要注册账号。装完之后记得把浏览器插件也装上——点客户端左下角的设置在浏览器管理里给Chrome和Edge都装一下插件后面抓考勤系统网页数据全靠它。界面左边是指令面板中间是流程画布右边是指令详情面板所有参数都在右边面板里填。打卡记录的读取与清洗Excel指令的正确姿势考勤原始数据一般是一张Excel一行代表一个人一天的一条打卡记录。流程第一步用【启动Excel】指令打开这张表Excel对象保存为变量后续所有表格操作都基于这个对象。这里有个新手必踩的坑读出来的整数会被当成小数比如工号1001读出来是1001.0日期会被读成日期对象。解决办法是在【读取Excel内容】指令里勾选读取单元格显示的内容返回的就是你肉眼看到的内容。【读取Excel内容】的读取方式有五种单元格、行内容、列内容、区域内容、已使用区域内容。做考勤汇总我一般用已使用区域内容一次性把整张表读成一个二维列表变量后面全部在内存里处理速度快得多。记住数据类型的对应关系单元格是字符串行和列是一维列表区域和已使用区域是二维列表。读取之前建议先做一次清洗。打卡记录里经常混着多余空格、全角冒号08:59和859会被当成两种东西。【循环Excel内容】指令里有个清除单元格前后空格的勾选项勾上它能省掉很多排查时间。清洗动作用什么指令备注去首尾空格循环Excel内容勾选项一勾搞定时间格式统一正则表达式指令统一成HH:mm工号转文本写入时设格式为文本的列防止1.0问题去重列表去重防补卡重复异常判定的流程控制If和循环怎么配合拿到干净的数据接下来就是判定逻辑。核心结构是循环Excel内容 If条件判断外层循环遍历每一行打卡记录内层用If判断打卡时间是否在规则区间内。影刀的If条件判断指令支持多条件组合比如打卡时间 09:00 且 星期几不是周一就套一个与条件。判定规则建议先用一张规则表存起来别把09:00写死在If条件里。我第一次做的时候就吃过亏公司调整了上班时间我在十几个If条件里逐个找08:30改成09:00改到第三十行漏了一个报表里有一组人全是假迟到。后来我把规则做成一张Excel配置表流程启动时先读规则表所有阈值都从变量取改规则只改表。下面这段逻辑用Python输入模式写会更清爽放个带注释的示例# 输入row 是循环Excel内容得到的当前行(一维列表)格式# [工号, 姓名, 日期, 打卡时间]打卡时间已统一为 HH:mm 字符串# 输出remark 是异常判定结果字符串写入报表的备注列clockrow[3]# 取第4列打卡时间ifclockorclockisNone:remark缺卡# 没有打卡记录elifclockrule_start:# rule_start 从规则表读入如 09:00remark迟到# 字符串比较在HH:mm格式下可直接比大小elifclockrule_end:remark早退else:remark正常字符串时间HH:mm格式可以直接比较大小这是个偷懒技巧前提是你清洗阶段把格式统一了。如果时间是9:00这种不带前导零的比较就会出错“9:00会大于10:00”。从考勤系统页面直接抓数据元素定位四合一如果你的考勤数据要登录人事系统后台才能导出那就要用上网页自动化。影刀抓网页数据的核心是元素定位实际用起来是四套东西元素捕获、XPath、CSS选择器、正则表达式我按使用频率排个序。元素捕获是日常主力点指令详情面板里的捕获元素按钮浏览器会出现橙色边框鼠标移到目标上点击确认即可考勤系统的打卡时间、姓名列都能这样抓。但考勤系统页面经常是表格结构单靠自动捕获抓不全列这时候要手写XPath。手写XPath我常用三种写法属性定位、模糊匹配contains、参照物定位。# 捕获元素考勤系统打卡记录表格的某一行 //*[idattendance-table]//tr[contains(class,record-row)] # 捕获元素表格里包含迟到文本的单元格 //*[contains(text(),迟到)] # 参照物定位先找到姓名表头再取同行的时间单元格 //*[text()姓名]/following-sibling::td[2]CSS选择器我主要用nth-child处理表格行比如#attendance-table tr:nth-child(2) td:nth-child(4)取第二行第四列比写一长串XPath短。正则表达式则在元素编辑里配合动态属性用考勤系统有些页面的class后面带随机数字用正则把数字部分通配掉就稳定了。四套方法的选择原则能捕获就捕获捕获不稳就XPath表格行列用CSS属性乱跳用正则。网页自动化的三个等待与翻页处理考勤系统后台页面的数据和表格往往是异步加载的流程跑快了会抓到空数据。影刀处理这类问题靠等待类指令我惯用的组合是先【等待网页加载完成】再【等待元素(web)】等考勤记录表格出现超时时间给到15秒。直接用固定【等待】指令睡几秒是不靠谱的做法网络一慢就翻车这个坑我踩过抓回来的报表有半页是空的。考勤记录通常按月分页展示翻页逻辑用下一页按钮是否可点来判断用If判断元素是否存在且class里不带disabled能点就点击后继续抓不能点就结束循环。抓完数据用【获取相似元素列表】批量拿行配合循环逐行提取单元格内容这是网页表格采集的标准打法。另外一个高频问题是iframe。不少老考勤系统把打卡记录嵌在iframe里直接捕获永远找不到元素。处理方法是在元素编辑器里检查元素的层级路径把网页对象换成iframe内的对象或者捕获时直接点iframe里面的元素影刀会自动带上iframe路径。月度报表的生成从二维列表到汇总表数据判定完最后一步是写报表。我在汇总表里按工号、姓名、出勤天数、迟到次数、早退次数、缺卡日期、备注组织列。写表用【写入内容至Excel工作表】指令写入方式选追加一行一行数据整理成一维列表传进去。表头第一次写之后每次只追加数据行。统计迟到次数这类计数我建议用字典来做新建字典工号做键每判定一次迟到就把值加一最后循环字典写入报表。字典取值前要处理键不存在的情况影刀里可以用If判断键是否存在不存在就初始化为0这个两步操作比直接取值稳不然第一个迟到的人就会让流程报错。写完数据别忘了保存和收尾。报表文件名我习惯带上年月比如考勤月报_2026-09.xlsx用日期时间指令自动生成这样历史报表按月自动归档找哪个月的数据翻文件夹就行。文件名里的日期一定要转成字符串再拼直接拼日期对象会报类型错误。键盘图像技能兜底老系统点不动怎么办考勤系统里总有那么一两个按钮既不是标准网页元素图像特征倒是挺明显比如某个导出按钮是个图片图标。这时候轮到图像识别指令出场【点击图像】之前先配【等待图像】等图像出现再点比裸点稳定。捕获图像时截的图要干净别把周围文字框进去缩放比例一变图就匹配不上。有些考勤客户端是桌面软件元素抓不到、图像也不稳还能用【键盘输入】模拟操作兜底比如用Tab键移动焦点加回车确认。图像识别和键盘模拟是两大保命技能优先级排在元素定位之后能用前面的就别用这两个。定时任务与飞书通知跑完不用盯着流程稳定后把它交给定时任务这才是自动化的意义。在影刀客户端的计划任务里新建任务选好流程触发时间设每月1号上午9点客户端在那台电脑上保持登录即可。有两个环境问题要提前处理电脑不能关机休眠账户要能自动登录不然任务到点跑不起来。跑完之后让机器人自己汇报。【飞书群通知】指令填上群机器人的webhook地址就能发消息消息格式选文本类型把本月共X条异常记录报表已保存至XX路径拼进消息体。如果开启了签名校验把密钥填进签名校验参数框。这样每月一号你只需要扫一眼群消息有异常再打开报表细看。子流程拆分三个月后你还得看得懂考勤汇总这种流程功能块很清晰我会拆成四个子流程读取清洗、异常判定、报表写入、通知归档主流程只做调度。子流程之间用参数传递数据比如读取清洗的输出是二维列表作为下一个子流程的输入。命名按编号_功能来比如01_读取清洗打卡数据编号保证了流程面板里的排序跟执行顺序一致。调试阶段多用断点在关键指令上右键添加断点运行到那里会暂停配合变量面板逐个检查中间结果。我排查考勤报表数据错位的那次就是在报表写入的子流程第一行打断点发现二维列表的列顺序跟预期反了两分钟定位比肉眼翻代码快得多。版本方面社区版每天有30分钟运行限制调试够了正式挂定时任务建议上创业版。Python协同与HTTP进阶数据量大时的两条路打卡记录上万行的时候逐行循环判定会比较慢这时候可以把判定逻辑挪到Python模块里写。在影刀里新建模块用def定义一个判定函数主流程里通过【调用模块】指令把整张二维列表传进去批量处理完再返回。第三方库比如pandas也能在模块里装groupby一次聚合出每人的异常统计比循环快十倍。如果你的考勤系统本身有Web接口还可以跳过页面操作直接用HTTP请求指令调接口拿JSON数据转成JSON对象后按层级取值。这条路依赖系统开放接口和登录态但速度和稳定性都优于页面抓取值得先试。易错速查考勤汇总最容易翻车的6个地方做考勤流程这两年我把踩过的坑整理成了速查表遇到问题先对着查现象原因解决工号变成1.0整数被读成小数勾选读取单元格显示的内容写入日期少了8小时datetime以UTC写入日期转字符串再写入时间比较结果错乱格式没统一带前导零清洗阶段统一成HH:mm抓到的表格是空的数据异步加载未完成换成等待元素(web)指令定位不到打卡记录数据在iframe里用带iframe路径的网页对象字典取值报错键不存在If先判断键存在再取值补充一条容易忽略的带括号的数字写入Excel会自动变成负数比如(123)“会变成-123这是Excel的会计格式解析导致的考勤里如果用到负数标记要留意。另外报表文件如果被Excel或WPS占用着没关闭写入会报被呼叫方拒绝接收呼叫”跑流程前确认文件没开着任务管理器里把残留的wps.exe和et.exe进程杀干净。学习资源与延伸阅读这套考勤汇总流程我迭代了三个版本从最开始的三十多个指令堆在一个主流程到现在四个子流程加配置表中间的源码我都整理过了完整流程源码我放在代码仓库 home.linyan.cloud可以直接参考改造把规则表换成你们公司的考勤制度就能跑。影刀官方的影刀学院里也有Excel自动化和邮件自动化的专题课程配合食用效果更好。#影刀RPA #RPA自动化 #考勤数据汇总 #Excel #定时任务作者林焱