在UiPath中壓縮與解壓ZIP文件有許多已知的方法。比如
1.通過System.IO.Compression實現
參考:https://blog.csdn.net/ahxdyz/article/details/94212631
存在問題:經實測,System.IO.Compression有時會點不出ZipFile(如圖1),經過類型檢查也找不到(如圖2)。推測是與本機.Net Framework版本有關系,或者需要Import Namespace什么的,暫未深究。有網友反饋無法照搬這個方法壓縮/解壓ZIP文件。

圖1

圖2
2.通過PowerShell / Windows內置解壓 / 調用COM對象 實現
參考:https://blog.csdn.net/ahxdyz/article/details/93534213
存在問題:增加項目技術復雜度,且對環境可能有要求。對於掌握UiPath都有點吃力的網友來說,照抄略有困難。
基於網友反饋,我特地演示一下基於ICSharpCode.SharpZipLib.Zip.FastZip壓縮/解壓縮ZIP文件的方法,這個包內置集成於UiPath(你裝好UiPath就有了),無須安裝額外的包或組件。
參考文檔:https://icsharpcode.github.io/SharpZipLib/help/api/ICSharpCode.SharpZipLib.Zip.FastZip.html
一、將單個文件壓縮為ZIP文件示例。
1.用Invoke Method,如圖3。

圖3
Invoke Method的屬性如圖4所示

圖4
其中,Parameters如圖5所示。部分網友可能由於網絡原因無法訪問Github,那么各參數的含義解釋如圖6。注意參數的類型和順序不能亂。
第1個參數是壓縮后要生成的ZIP文件名,可以是完整文件名(FullName),也可以是相對文件名(如圖所示)。
第2個參數是源文件夾路徑。
第3個參數是指定是否包含源文件夾的子文件夾。
第4個參數是在源文件夾中要篩選的文件名(按這意思應該是可以用通配符,比如“*.txt”,我不演示了,你們自己試試看就好)。

圖5

圖6
二、解壓縮單個ZIP文件
一樣用Invoke Method,如圖7。

圖7
Invoke Method的屬性如圖8所示,可見大同小異。

圖8
不過Parameters參數部分不一樣。如圖9。注意參數的類型和順序。關於參數的解釋如圖10。
第1個參數是要解壓的ZIP文件。
第2個參數是解壓后的文件要保存的文件夾,如果文件夾不存在則會自動創建。
第3個參數是針對解壓文件的篩選條件,類似前述壓縮方法中的參數#4。為NOTHING的話會解壓出ZIP包內的所有文件。

圖9

圖10
以上就是UiPath基於ICSharpCode.SharpZipLib.Zip.FastZip壓縮/解壓縮ZIP文件的方法。Inovke Method其它未提及的屬性不必做任何改動,保持默認即可。
如果本機確實沒有ICSharpCode.SharpZipLib.Zip.FastZip,官方其實有提供這個包,可以嘗試安裝看看。官方的包相對靠譜的,可以放心安裝使用。不過貌似裝不裝這個,都可以調用ICSharpCode.SharpZipLib.Zip.FastZip。另外,打開你的xaml文件之后,要確保ICSharpCode.SharpZipLib.Zip命名空間有Import進來(圖12)。

圖11

圖12
歡迎加入UiPath精英群

