[範本] RPA 處理 CSV 後方多餘的逗號

有時我們取得的 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 做資料上的處理。

分級: 入門是認識, 基本是運用, 進階是混合結合
範本是已可下載或可使用的範例, 至於教程當然是學習的結晶