2009-05-25 16 views
88

是否有免費的CSV解析器可以在一些自由許可下使用?對於Java的SuperCSV的一些對手,也許是一個端口?用於C#的CSV解析器/閱讀器?

+2

http://stackoverflow.com/questions/3507498/reading-csv-file – 2010-12-22 12:24:58

+5

using Microsoft.VisualBasic.FileIO.TextFieldParser; – 2010-12-22 12:26:14

+1

[解析.CSV的6種方法?高性能!](http://izlooite.blogspot.com/2011/06/top-6-ways-to-parse-csv-high.html) – 2011-06-29 17:22:29

回答

53

有上CodeProject一個很好的實現:

爲了讓更多的腳踏實地號碼,含145場和50,000條記錄45 MB CSV文件,讀者正在處理大約30 MB /秒。總而言之,花了1.5秒!機器規格爲P4 3.0 GHz,1024 MB。

7

嘗試filehelpers工作得非常好。我正在使用它來解析每天100 MB的文件。

3

我使用CSV解析器是CommonLibrary.NET的部分開始。

它使用.NET 3.5,有一個簡單的API和方便的重載/方法& lamda的迭代。

我沒有像上面這樣的任何基準測試,但關於它的好處是,它只是類似於Java Commons的庫中的一個組件。所以我還得到了命令行解析器,Repository實現等等。

10

您可以將CSV文件加載到DataTable。

示例代碼 -

static DataTable CsvToDataTable(string strFileName) 
{ 
    DataTable dataTable = new DataTable("DataTable Name"); 

    using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data Source = " + Directory.GetCurrentDirectory() + "; Extended Properties = \"Text;HDR=YES;FMT=Delimited\"")) 
    { 
     conn.Open(); 
     string strQuery = "SELECT * FROM [" + strFileName + "]"; 
     OleDbDataAdapter adapter = 
      new System.Data.OleDb.OleDbDataAdapter(strQuery, conn); 
     adapter.Fill(dataTable); 
    } 
    return dataTable; 
} 

確保您編譯項目以x86處理器。它不適用於x64。