The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

好用的 LINQ to CSV library

在做「匯出資料」功能的時候常會使用到 CSV ( Comma Separated Value ) 這種檔案格式,雖然格式並不複雜,但有好用的 Library 當然也能夠更省事啦。

我之前在 PHP 的時候也寫過一個 CSV Parser 也是可以處理許多 CSV 檔案格式不一的問題,例如說用 Outlook 匯出的連絡人 CSV 檔,跟 Excel 另存的 CSV 檔格式就不太一樣,第一次做 CSV Parser 的時候其實還蠻累人的,但是換到 .NET 就很少用 CSV 格式了,我大多用 Excel XML 格式做輸出,因為客戶最終目的還是要用 Excel 開啟匯出的資料。

Matt Perdeck 這位仁兄寫了個 LINQ to CSV library 可以讓你用 LINQ 語法方便的讀取 CSV 格式的檔案,也提供方法寫入 CSV 檔,除了方便好���之外,這個函數庫也十分的有彈性,功能也很強大,有興趣的人可以下載回來玩看看,也許以後會用到。

這套 LINQ to CSV Library 的特色有:

  • 依循最常見的 CSV 檔案格式,且可以正確的處理資料中包括逗號(,)與斷行(\r\n)的問題。
  • 欄位分隔符號可不限於使用逗號(,)或 Tab 符號,你也可以指定自己要用的分隔符號。
    例如:錢字符號 ( $ )、井號 ( # )、... etc.
  • 支援延遲讀取。
    這是 LINQ 的一個特色,可以讓你在定義 LINQ 語法時還不會進行資料的存取
  • 支援存取檔案中的日期與數字格式。
  • 可自動辨識各種不同的日期與數字格式。
  • 可彈性的控制日期與數字的輸出格式。
  • 支援不同的字集編碼 ( Encoding )。
    例如說在 Excel 中你要正確的開啟 CSV 檔你一定要用 Big5 編碼,否則中文會變成亂碼
  • 完善的錯誤處理機制,可讓你快速的找到 CSV 檔案中的錯誤格式。
    這功能很棒,不然檔案很大的 csv 檔要是格式有誤是很難查的!

相關連結