緣起:
這陣子都在學習怎麼在 Ubuntu 上操作 dotnet 的
CLI,今天在工作時有碰到需求要處理 csv 檔,後面是找到教學說,使用 CsvHelper
這個套件來處理。回家在看 microsoft 的 dotnet 文件,剛好學到 Nuget
套件的處理,所以想來動手操作個,順便紀錄 CsVHelper 的使用。
dotnet 專案加入套件:
第一步是建個 console 的專案,我下
來建立一個叫 NugetTest 的 Console 專案,然後用 vscode
來開啟專案資料㚒,開啟 terminal 視窗,照著這篇教學說的,輸入
它跑出這些訊息
在專案裡就能 using CsvHelper 了
專案參考的 package 設定,可以在
{專案root}/obj/project.assets.json 看到。我注意到,那些 package
預設會裝到 /home/{你這個使用者}/.nuget/packages 裡頭
CsvHelper 逐行讀取 Csv 檔内容:
參考的文章,我用 LibreOffice 弄一個 csv 檔出來
專案的 Program.cs 程式
31~38 行 : 定義
csv 檔每一列的資料,只要使用 Index 的
Attribute,它就會自動把 column index 自動對應到 class 的 property
上。
14~17 行 : csv
檔的設定,HasHeaderRecord 設成 true ,告訴它第一行是標頭。
19~27 行 : 用
StreamReader 讀取 csv 檔,再把 StreamReader 丢入 CsvReader 的
Constructor 裡,呼叫 CsvReader 的 GetRecords 方法,它會回傳
IEnumerable,class 參數是 CsvClass。用 foreach
來遊歷每一列,由於我們有設定
HasHeaderRecord,所以第一列不會在裡面。
最後輸入 dotnet run 來看輸出
沒有留言:
張貼留言