影刀RPA 用友ERP自动化实战:凭证录入与报表导出
影刀RPA 用友ERP自动化实战凭证录入与报表导出作者林焱写在前面用友U8、用友NC、用友T是国内中小企业用得最多的ERP系统。财务对账、凭证录入、月末报表这些工作重复度极高影刀可以接管。本文聚焦实战讲清楚用友ERP的桌面自动化核心技术和三个真实场景。一、用友ERP的界面特点用友U8/NC是基于Java Swing或.NET的桌面程序特点控件是标准Windows控件大多数输入框、按钮可以直接用影刀捕获表格控件特殊用友的录入表格是自定义控件不能用标准点击单元格指令快捷键是操控核心用友大量功能依赖Tab键切换字段、Enter确认、F9查询捕获用友控件时用桌面应用元素捕获捕获成功率约70%。剩下30%主要是凭证录入表格需要用坐标操作 快捷键配合。店群矩阵自动化突破运营极限二、关键操作技巧技巧1Tab键驱动录入用友凭证录入的核心是Tab键流转字段影刀用发送按键指令点击[凭证日期输入框] 输入文本 → 2024-01-15 发送按键 → Tab (跳到下一字段) 输入文本 → 100 (金额) 发送按键 → Tab 输入文本 → 1001 (科目代码) 发送按键 → Enter (确认并跳到下一行)技巧2科目查询弹窗处理录入科目代码后用友会弹出科目查询窗口。判断是否弹出importtimeimportpyautogui time.sleep(0.5)# 等待可能的弹窗# 截图识别标题栏是否有科目查询screenshotpyautogui.screenshot()# 用影刀OCR识别截图# 如果出现弹窗发送Enter或ESC处理更可靠的方式直接输入完整科目编码确保编码正确大多数情况下不会触发弹窗。技巧3坐标定位表格行用友录入表格的每行高度相对固定一般18-22像素。定位第N行的公式# 获取表格起始坐标手动测量一次table_start_x150# 表格第一列起始Xtable_start_y320# 表格第一行起始Yrow_height20# 每行高度测量得到defclick_cell(row,col_offset):点击表格中指定行、列偏移处的单元格![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/8eb4fa863a144423aac5a051d7a11b61.png#pic_center)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e2c8283f0d244aa5a770c7e5ac58aeb3.png#pic_center)xtable_start_xcol_offset ytable_start_y(row-1)*row_height pyautogui.click(x,y)time.sleep(0.2)三、实战案例一批量录入记账凭证场景每月有300-500条费用报销凭证从Excel导入用友。Excel格式| 日期 | 摘要 | 借方科目 | 借方金额 | 贷方科目 | 贷方金额 |流程设计importopenpyxlimportpyautoguiimporttimedefinput_voucher(date,summary,debit_account,debit_amount,credit_account,credit_amount):录入一张凭证# 点击新增按钮pyautogui.hotkey(alt,a)# 用友新增快捷键time.sleep(0.5)# 录入日期date_fieldpyautogui.locateOnScreen(uf_date_field.png,confidence0.8)ifdate_field:pyautogui.click(date_field)pyautogui.hotkey(ctrl,a)pyautogui.typewrite(date,interval0.05)pyautogui.press(tab)# 录入借方行# 摘要pyautogui.typewrite(summary,interval0.03)pyautogui.press(tab)# 科目pyautogui.typewrite(debit_account,interval0.05)pyautogui.press(tab)# 借方金额pyautogui.typewrite(str(debit_amount),interval0.05)pyautogui.press(tab)pyautogui.press(tab)# 跳过贷方金额列# 换行录入贷方pyautogui.press(enter)pyautogui.typewrite(summary,interval0.03)pyautogui.press(tab)pyautogui.typewrite(credit_account,interval0.05)pyautogui.press(tab)pyautogui.press(tab)# 跳过借方金额列pyautogui.typewrite(str(credit_amount),interval0.05)# 保存凭证pyautogui.hotkey(ctrl,s)time.sleep(1)# 检查是否弹出确认框confirmpyautogui.locateOnScreen(uf_confirm_btn.png,confidence0.8)ifconfirm:pyautogui.click(confirm)# 读取Excel执行批量录入wbopenpyxl.load_workbook(费用凭证.xlsx)wswb.active success_count0fail_count0fori,rowinenumerate(ws.iter_rows(min_row2,values_onlyTrue),start2):date,summary,debit_acc,debit_amt,credit_acc,credit_amtrowtry:input_voucher(str(date),summary,debit_acc,debit_amt,credit_acc,credit_amt)success_count1print(f第{i}行录入成功)time.sleep(0.5)exceptExceptionase:fail_count1print(f第{i}行录入失败{e})# 截图记录现场pyautogui.screenshot(ferror_row_{i}.png)print(f完成成功{success_count}条失败{fail_count}条)四、实战案例二月末报表自动导出场景每月末需要从用友导出资产负债表、利润表到Excel发给老板。defexport_financial_report(report_name,period,save_path): 从用友导出财务报表 report_name: 报表名称如资产负债表 period: 期间如202401 save_path: 保存路径 # 打开报表模块根据实际菜单调整report_menupyautogui.locateOnScreen(uf_report_menu.png,confidence0.85)ifreport_menu:pyautogui.click(report_menu)time.sleep(1)# 找到对应报表target_reportpyautogui.locateOnScreen(fuf_{report_name}.png,confidence0.80)iftarget_report:pyautogui.doubleClick(target_report)time.sleep(2)# 设置期间period_fieldpyautogui.locateOnScreen(uf_period_field.png,confidence0.8)ifperiod_field:pyautogui.click(period_field)pyautogui.hotkey(ctrl,a)pyautogui.typewrite(period,interval0.05)pyautogui.press(enter)time.sleep(2)# 导出文件 → 另存为 → Excelpyautogui.hotkey(alt,f)# 打开文件菜单time.sleep(0.5)pyautogui.press(a)# 另存为time.sleep(1)# 文件名save_dialogpyautogui.locateOnScreen(uf_save_dialog.png,confidence0.8)ifsave_dialog:filename_fieldpyautogui.locateOnScreen(uf_filename_input.png,confidence0.8)iffilename_field:pyautogui.click(filename_field)pyautogui.hotkey(ctrl,a)pyautogui.typewrite(save_path,interval0.03)pyautogui.press(enter)time.sleep(1)print(f报表已导出{report_name}→{save_path})五、稳定性保障策略temu店群自动化报活动案例用友自动化容易不稳定几个关键保障措施1. 状态验证不盲目操作每一步操作后验证是否成功defverify_operation(expected_image,timeout5):等待预期界面出现starttime.time()whiletime.time()-starttimeout:ifpyautogui.locateOnScreen(expected_image,confidence0.8):returnTruetime.sleep(0.5)returnFalse![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/dceaf2c3c8df4fa7b1e1f970957249fb.png#pic_center)# 保存后验证pyautogui.hotkey(ctrl,s)ifnotverify_operation(uf_save_success.png,timeout5):raiseException(保存凭证失败界面未出现成功提示)2. 出错时截图留底importdatetimedeftake_error_screenshot(step_name):timestampdatetime.datetime.now().strftime(%Y%m%d_%H%M%S)filenameferror_{step_name}_{timestamp}.pngpyautogui.screenshot(filename)print(f错误截图已保存{filename})3. 定期重启保持新鲜用友长时间运行后容易卡顿建议每处理100条凭证后退出并重新登录用友消除内存积累。总结用友ERP自动化的三把钥匙Tab键是主角字段切换靠Tab比点击可靠图像识别做导航找按钮、菜单用图像识别比坐标更稳等待要充足用友响应慢每步操作后留0.5-1秒等待财务场景下凭证录入出错的成本很高一定要做好日志和异常截图出问题了能快速定位是哪行数据、哪个步骤出了问题。署名林焱

相关新闻

二维小波变换C++实现:从原理到图像处理实战

二维小波变换C++实现:从原理到图像处理实战

1. 项目概述:为什么二维小波变换值得深挖?如果你在图像处理或信号分析领域摸爬滚打过一阵子,肯定对傅里叶变换不陌生。它能告诉你信号里有哪些频率成分,但有个致命短板:它没法告诉你这些频率成分是在什么时候出现的。比…

2026/7/28 2:36:53 阅读更多 →
Dify API Base URL 填到 /v1 后 404?先拆开 /v1/chat-messages

Dify API Base URL 填到 /v1 后 404?先拆开 /v1/chat-messages

Dify API Base URL 填到 /v1 后 404?先拆开 /v1/chat-messages 调用 Dify 应用 API 时,如果返回 404 Not Found,很多人会先换 API Key、模型,甚至重启整套 Docker。对于路径配置错误,最快的检查其实只有一个&#xff…

2026/7/27 3:55:28 阅读更多 →
亲密关系暴力:危险信号识别与心理干预策略

亲密关系暴力:危险信号识别与心理干预策略

1. 亲密关系暴力中的危险信号识别与应对 "她被男朋友咬掉鼻子却求法官宽恕他,一年后惨死于他刀下"这个标题揭示了一个令人痛心的现实——亲密关系暴力(Intimate Partner Violence, IPV)的恶性循环。作为长期关注家庭暴力干预的社会…

2026/7/26 10:41:46 阅读更多 →

最新新闻

基于本地大语言模型的剪贴板翻译工具TransPaste:无感操作与隐私安全的AI翻译实践

基于本地大语言模型的剪贴板翻译工具TransPaste:无感操作与隐私安全的AI翻译实践

1. 先搞清楚它解决的是什么问题,以及和传统翻译工具有什么不同 如果你经常需要在不同语言之间切换,比如看英文文档、写代码注释、查外文资料,那你肯定用过各种翻译工具。但大多数工具要么需要你手动打开网页或软件,复制粘贴&#…

2026/7/28 3:23:53 阅读更多 →
MySQL 8 安装与基础使用指南:从下载到执行第一条SQL

MySQL 8 安装与基础使用指南:从下载到执行第一条SQL

最近在帮新同事配置开发环境时,发现很多朋友在初次安装 MySQL 8 时,总会被各种配置选项、环境变量和连接问题卡住,网上教程要么版本过时,要么步骤跳跃。本文旨在提供一个清晰、完整、可复现的 MySQL 8 安装与基础使用指南,从下载到连接,再到执行第一条 SQL,手把手带你走…

2026/7/28 3:23:53 阅读更多 →
大模型技术的七大核心问题与工程实践挑战

大模型技术的七大核心问题与工程实践挑战

1. 大模型技术浪潮下的冷思考去年ChatGPT的横空出世,让大语言模型(LLM)技术真正破圈。作为从业者,我亲眼见证了从GPT-3到GPT-4的进化奇迹,也参与了多个企业级大模型项目的落地。但在技术狂欢背后,那些被忽视…

2026/7/28 3:23:53 阅读更多 →
Windows 10部署OpenPose完整指南:Python 3.7与CUDA 11.6环境配置

Windows 10部署OpenPose完整指南:Python 3.7与CUDA 11.6环境配置

1. 项目概述:为什么OpenPose在Windows上部署是个“技术活”?如果你在Windows 10上尝试过部署OpenPose,大概率会和我一样,经历过从满怀希望到怀疑人生的过程。这绝不是一个简单的pip install openpose就能搞定的事情。OpenPose作为…

2026/7/28 3:23:53 阅读更多 →
企业级AI编程实战:从Codex安装到工程化工作流构建

企业级AI编程实战:从Codex安装到工程化工作流构建

最近在技术社区里,一个现象越来越明显:很多开发者,尤其是刚接触AI辅助编程的朋友,面对Codex、Claude Code这类工具,常常陷入一个“会用但用不好”的困境。他们能照着教程让工具跑起来,生成几行代码&#xf…

2026/7/28 3:23:53 阅读更多 →
TPIC7710EVM评估板实战指南:从芯片验证到电子驻车制动系统开发

TPIC7710EVM评估板实战指南:从芯片验证到电子驻车制动系统开发

1. 项目概述:从芯片到系统,TPIC7710EVM如何成为电子驻车制动开发的“加速器”在汽车电子,特别是车身控制模块的开发中,电子驻车制动(EPB)系统是一个集安全性、可靠性与精密控制于一体的复杂单元。当工程师拿…

2026/7/28 3:22:53 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/27 4:33:59 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/27 6:31:56 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/27 4:01:12 阅读更多 →

月新闻