找回密码
 立即注册
查看: 228|回复: 0

02 UIPath分析PDF文档并导出Excel

[复制链接]
发表于 2022-6-16 16:43 | 显示全部楼层 |阅读模式
前言:
     今天,来处理一个曾经遇到过的问题,即从pdf文档中读取内容,然后导入到excel中,这个也是我们经常遇到的,特别是一些经常出入货的公司,这种文件又多,手工输入又是很繁琐。用Uipath自动化来处理正好合适。
需求:
从PDF文档中提取指定字段,并存入excel中。如下图发票:


需要把红色圈起的部分提取出来,存入excel中,excel的格式和图中格式一样。本次只处理提取这部分,其它的大家可以下来后再尝试。
操作步骤:
1、打开uipath,新建流程GetPDF2Excel。


2、拖入构建数据表活动,然后点击活动上的“数据表”,可以看到如下的界面:


3、构造字段,此字段是最终输出Excel的内容:


4、从左侧活动中拖入“读取PDF文本”(若是没有PDF活动,需要安装,具体的安装过程,见后面对PDF Activities的安装


5、设置PDF的相关内容:


此处主要设置这几项,若是pdf有多页,可以在范围中进行设置读取那一部分。
6、添加一个“写入行”活动,用来查看我们读取PDF的内容是否成功:


7、点击“运行”,查看执行的结果:


从此图中可以看到,发票上的文字都被提取了出来,需要导出的内容就是红色方框中的部分。后面就是怎么把这些内容转换成需要的内容了。

8、先把前面无关的部分去除掉,使用“赋值”活动,这里我家定位到“*移动通信设备*”,从这里开始截取。


9、运行看处理的结果:


开头无关的内容已经去除了。
10、去除后续无关的内容,从内容可以看到,我们要取的内容占了三行,而第四行又和第一行类似,因此,我们继续用“*移动通信设备*”分割,不过这次是从新字符串的头开始取。再使用一个“赋值”活动:


此处,indexof的第二个参数是开始查找的位置,可以根据长度来,写成
“去除开头.Substring(0, 去除开头.IndexOf("*移动通信设备*", "*移动通信设备*".Length))”
11、这次运行后的结果如下:


此时,已经非常接近我们所要的结果了。
12、把字符串用“回车换行”进行分割,再使用一个“赋值”活动:


注意,此时有小感叹号,表示类型不对,split函数使用后,得到的结果是个数组类型,所以Lines的定义必须是数组类型,在参数中设置类型:




最终结果如下:


感叹号消失了。
13、使用遍历循环查看下得到的结果:


可以发现结果是正确的,但是多了几行的空行。
14、分割字符串时,加入StringSplitOptions.RemoveEmptyEntries选项就能达到去除空白行的结果,如下图:


到此处,剩下的数据已经不多了,不过第一行(显示中的0行)还需要再次分割才能得到结果。而把第二、三行拼接在第一行第一个字段下就可以了,下面我们就来做这个操作。
15、 分割第一行,


可以看到,分割后的结果是正确的,不过却多了好几项,原因是把名称字段内本身存在空格,这里为了方便,我们就采取简单的处理办法,把需要合并到一起的项合并起来.
16、合并第一列的数据:


然后与发票中的数据对照:


可以看到,第一行第一列的数据已经处理成功,然后把第二、三行的合并过来就可以了;
17、获得完整的名称,使用一个“赋值”活动,操作如下:


完整的名称到此就获取完成,
18、把获取到的数据插入到数据表中:


19、把结果写入excel中:


20、查看Exce的结果


对比发票上的相关数据:


数据是一致的,大功告成。
PS:
PDF Activities的安装
1、选择管理程序包:


2、在搜索框中输入PDF,按如下顺序操作:


3、接受“许可证接受”


4、可以在活动中,应用程序集成下面看到PDF控件,即表示安装成功,如下图:


=======================================
本篇内容有些多,大家可以参考使用,在阅读过程中若是有什么不明白的,可以在下方讨论区留言。
也可以关注我的微信公众号:IT人的成长

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-3 06:26 , Processed in 1.129635 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表