有時我們取得的 CSV 資料的後方會多一個逗號, 但我們卻被幾個條件限制住了, 像是執行電腦沒有 Office 又必須使用 RPA 取得資料後自動處理。
因此我兜兜轉轉還是在 RPA 中嘗試出如何自動去掉逗號, 而本文是紀錄如何使用 RPA 處理 CSV 資料後方多餘的逗號。
正文
日常中, 某些原因下我們可能使用 RPA 取得 CSV 資料的後方會多一個逗號, 如下:
No,Item,Count,
1,A,10,
2,B,5,
3,C,7,
可是該狀況我們卻無法使用 Excel 快速去掉, 並且若直接匯入至資料庫或其他位置時會需多判斷一個欄位。 我們可能也不能使用程式碼或在資料庫內大量重複處理資料。 為了後續處理資料的簡便性, 我們還是需要想辦法使用 RPA 處理這個逗號。 以下將說明如何使用 RPA 處理資料中多餘的逗號。
事前準備
首先新增一個純文字檔案, 並將以下資料複製至純文字檔案內儲存關閉, 然後在關閉後將檔案名稱修改為 Test.CSV。
No,Item,Count,
1,A,10,
2,B,5,
3,C,7,
結果如下:
範例驗證
在 RPA 內新增一個新的 Flow, 並在左側 File Action 下找到 Read from CSV file 動作與新增。
處理如下:
- 路徑選擇我們新增的範例檔案 Test.CSV
- 編碼使用 UTF-8。
- 開啟 Advanced 進階設定,然後啟動第一列資料包含欄位名稱
- 其他為預設。
完成後我們即可先啟動測試確認資料是否能轉換為資料表。
準備結果
若執行正常, 我們在 CSVTable 的變數中可看到內容如下:
確認正常後, 我們即可開始使用 RPA 處理我們的逗號。
開始設計
在 File Action 下找到 Read text from file 檔案並新增。
處理如下:
- 路徑選擇我們準備的範例檔案 Test.CSV
- 資料修改存放在 List 內
- 編碼使用 UTF-8
完成後在 Variable Action 內找到 Create new list 並新增, 變數名稱修改為 Temp。
新增 List 變數後, 我們將開始設計我們本文的重點: 我們將在 RPA 中使用 .NET 處理我們的資料。 這樣我們將無需獨立寫一個小程式驅動處理。
在 Scripting Action 下找到 Run .NET script 與新增。
首先先留意 Language 是否為 C#, 然後點擊 Edit 進到 RPA 變數與 .NET 變數交換介面。
新增兩個欄位: 一個座位輸入內容, 一個座作為輸出內容。
設定內容:
- 輸入:名稱為 Value, 屬性為 List, 動作為進, 輸入變數為 FileContents, 輸出變數為空白
- 輸出:名稱為Output, 屬性為 List, 動作為出, 輸入變數為空白, 輸出變數為 Temp
完成後點擊 Done, 然後下方 .NET code 運行中補充以下程式碼:
List<string> list = new List<string>();
foreach (var item in Value)
{
string text = Convert.ToString(item);
list.Add(text.Remove(text.Length - 1));
}
Output = list;
補充完成後我們即可進入收尾階段。 在 File Action 中找到 Write text to file 動作並新增。
處理如下:
- 檔案路徑選擇與我們範例相同的位置並補充檔案名稱, 如我們直接補充 New.csv (若檔案不存在是將會自動新增)。
- 輸入內容選擇 Temp 變數
- 編碼使用 UTF-8
- 其他預設
完成後我們在 File Action 下找到 Read from CSV file 並新增。
處理如下:
- 路徑選擇我們新檔案
- 啟動第一列資料包含欄位名稱
- 其他預設
完成以上內容後我們即可啟動測試。
測試結果
我們測試過程中可以看到我們 FileContents 取得的資料含有逗號。
處理完成後我們在 Temp 存放的資料已去除逗號
最後我們取得新檔案時空白欄位也已消失, 並且資料尾部已去除逗號。
結語
雖然這種情境不常遇到, 但有時實在難免地還是有可能發生, 因此我們還是需要嘗試使用 RPA 嘗試出方法並完成。
當然, 若條件允許下我們還是建議使用程式碼處理資料清晰與處理, 不建議使用 RPA 做資料上的處理。