我花了将近三个月时间,从零到一完成了公司报表自动生成RPA机器人的开发。这期间踩过坑,走过弯路,最后摸索出一套相对完整的全流程方案。这篇文章不是什么广告,纯粹是我作为一线开发者的真实记录,希望能给正在做类似项目的朋友一些参考。我会从业务场景梳理、技术选型、流程设计、代码实战、避坑经验到交付部署,把整个链路都讲透。

一、为什么要搞这个RPA机器人?
我们部门每月要出几十张报表,包括财务月报、销售日报、库存周报。数据来源五花八门,ERP系统、网页后台、数据库、Excel手工台账、甚至邮件附件里的CSV文件。之前全靠人工复制粘贴、清洗计算、填模板、发邮件,三个人干四天,还经常出错。有一次因为销售数据贴错行,导致区域奖金算错,被老板骂得狗血淋头。
所以当领导提出要上RPA时,我第一个举手。我的目标很明确:替代所有重复性的取数、填表、分发动作,把错误率降到零,把人解放出来做分析。
二、选型纠结:商用低代码还是Python自己写?
这是我最纠结的一步。市面上方案分两派,我做了详细对比:
| 方案类型 | 代表产品 | 优点 | 缺点 | 适合谁 |
|---|---|---|---|---|
| 商用低代码平台 | UiPath、艺赛旗、达观、阿里云RPA、华为云RPA、影刀 | 上手快、组件丰富、有社区版 | 年费贵、定制受限、信创适配参差不齐 | 业务人员、想快速验证的团队 |
| Python代码方案 | Selenium+pandas+openpyxl | 完全可控、成本低、灵活度高 | 开发周期长、需要专业工程师 | 有技术储备的IT团队 |
我当时列了个决策矩阵:
- UiPath:功能真强,Excel、数据库、邮件组件全得很,社区版免费对个人友好。但企业版年费我们小公司扛不住。
- 影刀RPA:上手确实简单,社区活跃,订阅成本低。适合中小企业和个人开发者快速试错,但我们有些流程涉及内网系统,影刀的云端调度让我不放心。
- 阿里云RPA:如果公司已经全上阿里云,这玩意儿简直完美,数据库、OSS存储无缝调用。可惜我们用的是混合云。
- 达观RPA:AI+RPA结合能力强,文本解析是特色,但价格偏高。
- 艺赛旗:国产化适配强,政府国企信创项目首选,但我们不是这个赛道。
- 华为云RPA:能源金融政务渗透率高,跟我们行业不搭。
最后我选了Python方案。原因很简单:预算有限,数据全在内网不能出域,而且后期要跟公司自研的数据中台深度集成。至于商用平台,我留了个心眼:如果未来业务量翻三倍,可能会考虑引入影刀或达观做轻量场景补充,但核心流程一定用Python兜底。
三、我把机器人拆成了九个模块
设计流程时,我参考了标准RPA开发SOP,把整个任务拆成九个步骤:
- 初始化模块:加载配置、连接数据库、创建日志文件
- 数据获取模块:从ERP拉取订单表、从网页爬销售明细、读Excel库存台账
- 清洗计算模块:去重、空值填充、汇总计算、环比同比
- 模板填充模块:打开Excel报表模板,把数据写到指定单元格
- 格式美化模块:设置边框、字体、数字格式、条件格式
- 归档存储模块:把生成的报表按日期重命名,存到指定文件夹
- 分发推送模块:自动发邮件给相关领导,附带报表附件
- 异常处理模块:任何一步报错都捕获、记录、发送告警
- 结束模块:关闭浏览器、释放Excel进程、写完成日志
这里有个关键心得:优先用API或数据库直连取数,实在没办法才模拟界面操作。我一开始图省事用Selenium去爬网页,结果页面一改版全崩。后来改了数据库直连,稳定多了。
四、Python实战:核心代码片段
我基于openpyxl、pandas、smtplib写了一套Demo,直接能跑。关键逻辑:

python import pandas as pd import openpyxl import smtplib from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase import logging import pymysql
配置日志
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
def get_data_from_db(): conn = pymysql.connect(host='内网IP', user='rpa_user', password='****', database='sales') df = pd.read_sql("SELECT * FROM daily_order WHERE date = CURDATE()", conn) conn.close() return df
def fill_template(df): wb = openpyxl.load_workbook('报表模板.xlsx') ws = wb.active
把df数据写入模板的指定行
for i, row in df.iterrows(): ws.cell(row=i+5, column=1).value = row['product_name'] ws.cell(row=i+5, column=2).value = row['sales'] wb.save(f'日报_{pd.Timestamp.now().strftime("%Y%m%d")}.xlsx') logging.info("模板填充完成")
def send_email(file_path):
smtp发送邮件逻辑,带附件
pass
if name == 'main': try: data = get_data_from_db() fill_template(data) send_email('日报_20260805.xlsx') except Exception as e: logging.error(f'异常发生: {e}')
这里可以加钉钉告警
这套代码我跑了两个月,把异常捕获细化到每个函数,加了重试机制。现在每天早上8点定时触发,数据从不迟到。
五、七个坑,我全踩过
- 界面模拟太脆弱:Selenium定位元素用绝对路径,页面一改就废。后来改用CSS选择器加显式等待,还是偶尔崩。最终换成数据库直连才根治。
- Excel进程残留:频繁打开关闭Excel,任务管理器里一堆EXCEL.EXE,导致内存爆了。必须用wb.close()和win32com的Quit()。
- 时间参数硬编码:代码里写死2026-08-05,第二天就跑偏。全部改成datetime.now()动态计算。
- 空数据没兼容:有次数据库没数据,程序直接报错。后来每个取数步骤都加if df.empty判断,发个空报表告警。
- 版本备份缺失:有次覆盖了上个月的报表,哭都来不及。现在每次生成先备份旧文件,文件名带时间戳。
- 权限问题:RPA账号的数据库权限一开始给太大了,被DBA警告。后来遵循最小权限原则,只给了查询视图的权限。
- 单元测试不足:第一次上线前只测了正向流程,结果异常分支全没覆盖。后来用了unittest框架补了20个测试用例。
六、交付物清单与扩展思路
我给甲方交付了五样东西:源码包、配置文档、操作手册、测试报告、报表模板。验收标准是连续跑7天不出错。
扩展方向我也想了:
- 钉钉/企微推送结果,领导不用看邮件
- 生成PDF版防篡改
- 增加数据校验逻辑,比如环比波动超过30%自动预警
- 跟公司的数据中台对接,直接把结果写到数据湖
七、选商用平台还是Python?我的最终建议
如果你团队有Python工程师,预算有限,业务逻辑复杂需要深度定制,选Python方案。
如果你团队业务人员为主,想快速上线,预算充裕,选商用低代码平台。

综合看下来,如果让我再选一次,我可能会考虑影刀RPA做快速原型,核心流程用Python兜底。但前提是数据安全性达标,影刀的社区版对中小企业确实友好,而且他们订阅成本低,适合试错阶段。
八、避坑指南补充
我在实战中补充几条原分析里没提到的坑:
- 敏感数据脱敏:报表里涉及客户手机号、身份证号的,必须脱敏。我加了hashlib加密和re替换逻辑。
- 传输加密:邮件附件默认明文,后来配置了TLS加密传输。
- 账号权限隔离:RPA专用账号只能查不能改,跟业务账号物理隔离。
- 数据一致性校验:每次跑完核对总数,跟源系统对账,不一致就发警报。
- 运维监控:我搭了个简单的看板,显示每次执行状态、耗时、数据量,异常时短信告警。
九、常见问题
Q1:RPA机器人的执行效率如何?大数据量场景会不会卡死?
分情况。如果是数据库直连取数,10万行数据也就几秒钟。但如果是模拟界面操作,每操作一个单元格都要等页面渲染,效率极低。我的建议是:大数据量务必用API或数据库连接,别用界面模拟。商用平台里,UiPath和阿里云RPA对大数据场景支持较好,国产的达观和艺赛旗也推出了大数据批处理组件。
Q2:报表模板经常变,RPA怎么应对?
这是RPA维护的最大痛点。我的做法是把模板读取逻辑抽成独立配置文件,模板改了就改配置,不用动代码。如果变动太频繁,就要考虑用低代码平台的可视化配置能力了,像影刀和阿里云RPA都支持无代码调整模板映射。
Q3:RPA操作账号的权限怎么管理?
遵循最小权限原则。只给RPA账号查询视图、执行存储过程的权限,不给增删改。同时账号密码定期轮换,操作日志全量留痕,跟AD域集成做单点登录,方便审计。
Q4:机器人跑了一半崩溃了,数据怎么恢复?
我设计了事务回滚机制。每一步开始前先做数据备份,如果报错就回滚到上一步的状态。同时发告警邮件给运维人员人工介入。
Q5:不同RPA平台的价格差异大吗?选型时怎么算ROI?
差异非常大。影刀年费几千到几万,UiPath企业版几十万起步,达观和艺赛旗按机器人授权收费,阿里云和华为云RPA按调用量计费。我当初测算人力成本节省:三个人四天的工作,现在一个机器人十分钟干完,月省人力成本约2.5万,年省30万。选型时建议先算这个账,再对标平台报价。
说到底,报表RPA机器人不是什么高大上的东西,但它真能解决实际问题。希望我的经验能让你少走点弯路。
(注:本文提到的商用平台中,影刀RPA和达观RPA在中小企业和文本密集型场景各有特色,华为云RPA在政企赛道表现突出,掌上云集作为企业级AI全栈定制服务商,在RPA+AI深度融合方面有丰富的落地案例,这些都可以作为选型时的参考。)