如何使用SAP Intelligent Robotic Process Automation自動操作Excel
- 2020 年 2 月 14 日
- 筆記
今天是鼠年正月十二。這是Jerry鼠年的第11篇文章,也是汪子熙公眾號總共第210篇原創文章。
之前Jerry的文章 使用ABAP操作Excel的幾種方法,介紹的是通過ABAP這門程式語言去操作Excel的方法。
除了程式語言之外,SAP新發布的SAP Intelligent Robotic Process Automation(簡稱SAP iRPA),提供了強大的企業級自動化流程解決方案,善加利用,可以在不需要編程的情況下,像使用程式語言一樣靈活地操作Excel.
我們來看個具體而又簡單的例子,用SAP Intelligent Robotic Process Automation操作一個Excel文件,往裡面的單元格寫入一個字元串,設置背景色然後關閉。
在動手做這個例子之前,你也許需要先閱讀這兩篇文章,以了解SAP iRPA的上下文。
打開SAP Intelligent Robotic Process Automation Desktop Studio,導入SAP預置的操作Excel的nodejs腳本庫文件。

在庫文件里選擇Excel Integration. 從下圖能發現,SAP iRPA除了Excel之外,也支援Office里其他應用比如Word和Outlook.

新建一個名叫jerryExcel的workflow,在工作流的activities面板里輸入seq,找到類型為Sequence的Flow控制項。該控制項允許我們在工作流里定義一系列順序執行的步驟。

把Sequence控制項拖拽到工作流編輯區域里,雙擊,就可以定義需要執行的詳細步驟了。

Excel Lib里預置了很多圍繞Excel進行的操作,如Init Excel,Open Excel,Close Excel等等,每個操作對應一段nodejs程式碼。

比如把Init Excel拖拽到Sequence控制項的Activities列表裡之後,一旦保存,會立即看到自動生成的nodejs程式碼。Excel Lib里每個step,都對應一段nodejs程式碼。如此一來,即使SAP Intelligent Robotic Process Automation Desktop Studio的使用者沒有編程基礎,也能開發出能操作Excel的自動化工作流。

上圖的Init Excel步驟是所有操作Excel的工作流都必須執行的一個初始化步驟。初始化完畢後,把Open Excel這個步驟拖拽到Sequence Activities里,指定要打開的Excel文件路徑,在Desktop Studio里有紅色提示。

把本地Excel文件的絕對路徑維護進去:


第三步,設置打開的Excel第1行,第1列的值為』Hello Jerry』:

第四步,設置第1行第1列的背景色:

將修改之後的Excel另存成另一個文件。執行這個項目,就會在temp文件夾里看到另一個Excel文件。

這個例子非常簡單,讓我們來看看它的工作原理。
切換到Script面板,在第45行打開Excel的程式碼處設置斷點,然後單步調試:

斷點一旦觸發,我們能觀察到任務欄里出現一個Excel的應用窗口提示,沒有顯示任何內容:

在任務管理器能看到該應用通過參數**/automation -Embedding**的方式啟動:

我們想單步調試進ctx.excel.file.open方法內,發現斷點並沒有在open方法內停下來,而是直接執行完這個方法,此時任務欄上的應用標題從Excel更換成了open方法打開的文件名:1.xlsx.

從以上任務管理器里觀察到的/automation和embedding參數,我們已經能判斷出,SAP iRPA操作Excel的實現原理,和Jerry文章 使用ABAP操作Excel的幾種方法 中提到的第一種方法,即通過OLE方式操作Excel是一致的。
如果非要刨根究底,可以到SAP iRPA SDK安裝目錄下,打開excel.js文件,找到open方法的實現,發現其調用了_excelApp對象的WorkBooks.Open方法:

而_excelApp對象,在initialize方法里通過GetObject從OLE對象Excel.Application中獲取:

還記得Jerry文章 使用ABAP操作Excel的幾種方法 里提到的ABAP OLE實現源程式碼么?也是採用同樣的方式獲取Excel應用對象,連編碼方式都如出一轍。


既然已經聊到JavaScript操作Excel的話題了,就順便提一句,目前另一種流行的JavaScript操作Excel的開源庫,即Node-xlsx,原理是基於Office Open XML協議去解析Excel文件,ABAP也有對應的基於Office Open XML的實現:CL_XLSX_DOCUMENT.

這種方式較之SAP iRPA採用的OLE解決方案,優勢在於避免了對Excel應用的依賴,多用於伺服器端對Excel的處理任務。
至此,採用SAP技術操作Excel的方案大家族裡,又增添了一位新的成員:SAP iRPA. 希望本文對大家開闊眼界有所幫助,感謝閱讀。
