前言:
今天,來處理一個曾經遇到過的問題,即從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人的成長































