news 2026/10/20 10:58:04

影刀RPA进阶教程:Excel图表自动生成——采集数据直接变可视化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
影刀RPA进阶教程:Excel图表自动生成——采集数据直接变可视化

影刀RPA进阶教程:Excel图表自动生成——采集数据直接变可视化

数据采回来只是一列列数字,老板要的是一眼能看懂的图。每周手工选中区域、插入图表、调坐标轴,重复劳动到怀疑人生。这篇进阶教程讲怎么用影刀RPA把这一步自动化:采集流程落表之后,自动生成折线图、柱形图,再顺手插一张数据透视表,采集数据直接变可视化,全程不需要打开Excel点一次鼠标。

我是非技术出身做电商运营的,影刀RPA用了两年多,图表自动化算是我的进阶招牌项目。这篇会把驱动方式的选择、openpyxl画图的代码、透视表的坑一次讲透,前面的采集和落表部分我会带得快一点,重点全砸在图表这一环。

环境与安装:先把驱动方式这件事搞明白

老规矩:影刀客户端装好、浏览器插件装好、能新建应用。社区版就能做本篇全部内容,图表生成跑一次几十秒,30分钟/天的时长绰绰有余。

做Excel图表自动化,必须先理解【打开/新建Excel】指令里的"驱动方式"这个参数,官方文档列了四种:

驱动方式特点适用
office兼容性最好,支持xls和csv有Office的机器,公式读取正常
wps支持WPS表格办公机装的是WPS
openpyxl没装Office/WPS也能操作服务器环境、纯读写场景
auto_check自动按顺序检测拿不准就选它

openpyxl有个官方文档明确写的限制:公式会被以字符串形式读出来,而不是计算结果。所以我的分工是——写数据用office驱动,画图表用openpyxl驱动,两者各干各的活。

整体流程设计:图表生成作为独立子流程

流程拆三层:01_采集落表、02_数据汇总、03_图表生成。01采集竞品或店铺数据写进数据表;02把明细汇总成一张"图表数据源"工作表;03专门负责可视化。为什么图表要独立成子流程?因为数据源经常变,采集逻辑改八遍,图表子流程一个字不用动,这就是子流程封装复用的价值。

子流程之间用流程参数传递Excel对象,主流程里【打开/新建Excel】把对象存成变量,三个子流程都引用同一个变量,全程只开一个文件,避免多个Excel进程打架。

元素定位四合一:采数环节的最小必会

图表的原料是数据,数据来自采集,采集绕不开元素定位。这里给你一个浓缩版四合一:元素捕获解决80%的常规抓取,点顶部工具栏"捕获元素",橙色边框出现后点击确认;class动态变化时手写XPath,contains模糊匹配是最常用的写法;结构简单时CSS选择器一行搞定,div.item span.price这种;价格藏在长文本里时用正则提取数字。

# 捕获元素:销量列表项(class固定、结构浅,CSS最省事) div.sku-list > div.item > span.sales # 捕获元素:页码文字"共36页"(文本模糊匹配,只能用XPath) //*[contains(text(),'共') and contains(text(),'页')] # 参照物定位:通过"累计销量"文字定位右侧数字 //*[contains(text(),'累计销量')]/following-sibling::*[1]

选型口诀:有干净的class用CSS,要按文本找或跨层级找用XPath,动态文本里的数字用正则。记住这个就不需要在四种写法之间反复纠结。

流程控制:先判断有没有数据再画图

画图前必须做防呆:数据表是空的,图会画出一个空壳,或者直接报错。主流程骨架:

  1. 【打开/新建Excel】打开数据文件

  2. 【读取区域】读取数据源,判断列表长度是否大于1(大于1说明除表头外有数据)

  3. If有数据→调用03图表生成子流程;Else→【打印日志】"数据为空,跳过图表"并走告警

  4. 整体包【Try-Catch】,Catch里输出日志,Finally里【关闭Excel】

这个"先判断再画图"的If分支帮我避开过最尴尬的场景:周一早会上打开自动生成的报表,图表区域一片空白。原因就是那天采集全挂了,数据没进来,图表流程照跑。

数据处理:汇总出图表数据源

图表不能直接吃明细,要先汇总。用【读取区域】把明细读成二维列表,Python里按日期分组求和,生成汇总表,再用【写入内容至Excel工作表】写到"图表数据源"工作表。

汇总表长这样,两张图共用这一个数据源:

日期日销售额订单量
09-2245230.5312
09-2351280.0356
09-2447890.0329

写入时留意两件事:写入内容传二维列表[[日期,销售额,订单量],...]一次写完,比循环逐行快;"格式设置为文本的列"把日期列设为文本,防止09-22被转成日期类型后图表横轴错乱。

这里顺带说数据透视表:影刀有【新建透视表】指令,但官方文档里专门列了它的报错原因——数据源区域标题行不能有空格,标题带空格会报"不能设置类PivotItem的Visible属性"。我所有数据源表头的命名习惯就是无空格的下划线风格,从根上避开这个坑。

进阶技能:openpyxl自动生成折线图和柱形图

到了本篇核心。影刀原生指令没有"插入图表",业界通行做法是在【运行代码】指令里用openpyxl画。openpyxl正是影刀支持的驱动之一,装在流程依赖里开箱即用。代码不长,注释写全:

# 输入:file_path Excel路径;输出:无(直接在文件里生成图表)# 在【运行代码】指令中执行,需先pip安装openpyxlimportopenpyxlfromopenpyxl.chartimportLineChart,BarChart,Reference wb=openpyxl.load_workbook(r'D:\报表\销售日报.xlsx')ws=wb['图表数据源']# 数据源工作表max_row=ws.max_row# 自动取行数,数据多少天图就多长# 折线图:日销售额趋势line=LineChart()line.title="近7日销售额趋势"line.y_axis.title="销售额(元)"line.x_axis.title="日期"data=Reference(ws,min_col=2,min_row=1,max_col=2,max_row=max_row)# B列含表头cats=Reference(ws,min_col=1,min_row=2,max_row=max_row)# A列日期做横轴line.add_data(data,titles_from_data=True)line.set_categories(cats)line.width,line.height=18,9# 单位厘米ws.add_chart(line,"F2")# 图表锚定到F2单元格# 柱形图:每日订单量bar=BarChart()bar.title="近7日订单量"bar.y_axis.title="订单数"data2=Reference(ws,min_col=3,min_row=1,max_col=3,max_row=max_row)bar.add_data(data2,titles_from_data=True)bar.set_categories(cats)bar.width,bar.height=18,9ws.add_chart(bar,"F22")# 锚到F22,两张图上下排开不重叠wb.save(r'D:\报表\销售日报.xlsx')

三个关键点:Reference的min_row=1带上表头,配合titles_from_data=True,图例自动就是列名;max_row动态取,数据多一天图就自动长一天,永远不用改代码;图表锚点是左上角单元格,两张图锚点留足纵向间隔,不然重叠成一团——这是我踩过的第一个图表坑。

鼠标键盘与图像:图表环节的应急手段

openpyxl画不了所有图,比如Excel里已经做好模板、只差刷新的场景。这时反向操作:用office驱动打开模板文件,靠【等待元素】确认Excel窗口就绪,模板里的图表引用的是固定区域,数据更新后图表自动刷新,根本不用碰图表本身。这是"让图表跟着数据走,而不是让程序去画图"的思路,简单场景更好用。

个别老系统导出的报表格式诡异,openpyxl打不开,就用图像识别兜底确认页面状态:wait_appear等待某按钮图像出现再继续,锚点九位置加偏移量点导出按钮。图像指令只做"确认"和"点击",不做数据读取,读数还是交给指令。

系统联动:带图表的报表怎么发出去

图表生成完,两条出路。

第一条是邮件:【发送邮件】指令把xlsx加为邮件附件,SMTP服务器下拉选常用邮箱,勾"使用SSL"和"SMTP服务器需要身份验证"(填授权码),正文一句话说明"图表见附件第2个工作表"。想让图直接出现在邮件正文里,就勾选HTML格式,配合【Base64编码文件】指令把图表截图转成Base64字符串插进正文,官方文档里写明这两者要配合使用。

第二条是截图嵌入其他文档:Excel扩展指令里有【区域截图】,把图表区域截成图片,再走【粘贴至幻灯片】进周会PPT。有个官方文档提过的坑:截取的区域含数据透视表时会截到异常内容,透视表区域别用截图方案,直接发文件。

定时执行照旧:计划任务里设每周一08:30,采集→汇总→图表→发邮件一气呵成,记得执行机电源设置改"从不",防止休眠不触发。

工程化规范:图表自动化怎么维护不崩

三条实操经验。第一,数据源表永远单独一个工作表,图表引用它,明细和图表互不干扰,改明细格式不会弄断图表引用。第二,openpyxl版本锁死,升级依赖前先在测试文件上跑一遍全流程——Python依赖包出问题时,影刀编辑器里可能出现新建Python模块一直转圈的情况,官方排查方向是本机jedi库版本和加密软件,遇到就按文档提示处理。第三,每张图表在工作表里的锚点位置固定下来写进注

释,后面接手的人一眼明白版面规则。

调试图表代码时,我在【运行代码】前后各加一条【打印日志】,输出max_row和保存路径,图表异常时日志直接告诉你是数据行数问题还是路径问题,配合断点单步执行,十分钟内能定位。

易错速查表

报错/现象原因解决
openpyxl读公式得到字符串openpyxl驱动的固有限制需要公式结果时改office/wps驱动
新建透视表报PivotItem错误数据源标题行有空格去掉标题空格再建透视表
两张图表重叠成一团锚点间隔不够第二张图锚点下移,如F22
Excel报"发生意外"进程残留或xls行数超限清进程;超65536行改用xlsx
图表空白数据源没数据流程照跑画图前If判断列表长度
Python模块编辑转圈本机jedi版本冲突卸载/降级jedi,重开编辑器

学习资源与延伸阅读

这篇涉及的开图表完整流程源码——采集、汇总、openpyxl绘图、邮件发送四个子流程——我放在代码仓库 home.linyan.cloud,注释都是中文的,改改文件路径就能跑。图表代码的Reference和锚点写法建议对照官方openpyxl文档再消化一遍,另外影刀官方的"Excel自动化-进阶"中级课程把读写指令讲得比我细,配合食用效果最好。


#影刀RPA #RPA自动化 #Excel #数据可视化 #图表生成 #流程自动化

作者:林焱

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

C++数据结构实战:从链表到哈希表,掌握选型与实现核心

数据结构是一门非常容易被低估的课。很多同学觉得它不就是一堆链表、树、图吗,背一背就完事,结果一到手写代码就卡住,要么指针把你绕晕,要么递归根本看不出返回值在干嘛。也有朋友工作两三年后回来补课,才发现以前写的…

作者头像 李华
网站建设 2026/10/20 10:52:24

GLM5.3 CyberSec w4A16本地部署[2]:并行策略与 PP 切分

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/20 10:50:07

PyImgSearch 博客中文翻译第十篇:图像搜索技术与翻译实践总结

1. 从"PyImgSearch 博客中文翻译(十)"这个标题能读出什么第一次看到"PyImgSearch 博客中文翻译(十)"这个标题,很多人可能会直接划过去——看起来就是一个系列翻译的第十篇,没什么特别的…

作者头像 李华
网站建设 2026/10/20 10:49:24

提示词生成代码的15个质量底线:从语义偏移到代码审查实战

我先说一个真实感受:用提示词生成代码,最大的风险不是“生成的代码跑不通”,而是“跑通了,但你觉得它没问题”。我见过很多次这样的场景——开发者把需求丢给大模型,拿到一段看似完整、甚至带注释的函数,直…

作者头像 李华
网站建设 2026/10/20 10:49:08

javaweb药房药品采购管理系统设计与实现

目录同行可拿货,招校园代理 ,本人源头供货商功能模块分析业务流程设计技术实现要点扩展功能建议项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作点击我获取源码->获取博主联系方式->进我个人主页-->同行可拿货,招校园代…

作者头像 李华
网站建设 2026/10/20 10:49:07

AI Agent从概念到落地:原理拆解、生活工作场景与程序员实操指南

我前段时间翻到一份某知名研究团队发布的AI Agent深度解读,说实话,作为一个天天和代码打交道的程序员,那篇报告里最让我有感触的不是那些宏观数据,而是它把Agent这玩意儿从“概念热词”拉回到了“日常工具”的定位。AI Agent不是又…

作者头像 李华