C#のCSVパーサー/リーダー?[閉まっている]


89

いくつかの自由なライセンスの下で利用できる、CSVパーサーの無料の優れた実装はありますか?SuperCSV for Javaに対応するもの、たぶん移植ですか?



5
Microsoft.VisualBasic.FileIO.TextFieldParserを使用します。


1
建設的ではありませんか?SO管理者はとてもクレイジーです。これは非常に役立つ質問です。
リチャード、

回答:


70

24
FileHelpers(少なくともCSVの場合)では、「ソース(ファイル)のレコードにマップするクラスを定義する」、「レコードマッピングクラスを宣言する必要がある」などが必要ですが、これはそれほど難しくありません。予想される列の数が事前にわからないので、CSVをDataTableに変換したいと思います。
Konrad Morawski、2011

53

CodeProjectには素晴らしい実装があります

さらに多くの情報を提供するために、145フィールドと50,000レコードを含む45 MBのCSVファイルで、リーダーは約30 MB /秒を処理していました。つまり、全体で1.5秒かかりました。マシンの仕様はP4 3.0 GHz、1024 MBでした。


(私の+1を取り戻す):53MBのファイルで、lumenworks Fast CSVリーダーを壊しました。43,000行後にラインキャッシュが失敗し、バッファをスクランブルしたようです。を試しましたがMicrosoft.VisualBasic.FileIO.TextFieldParse、それはトリックをしました。
コーディング終了

11

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では機能しません。


1
私は組み込みのODBCまたはOLEDBライブラリを使い続けたいと思っていたので、これはかなりうまくいきました。ところで、以下はOLEDBとODBCの両方の追加コードサンプルです:csvreader.com/csv_benchmarks.php
Meringros

5
残念ながら、これは64ビットでは機能しません。
DenNukem '15




3

CommonLibrary.NETの一部であるCSVパーサーを使い始めました。

それは.NET 3.5を使用し、簡単なAPIと反復のための便利なオーバーロード/メソッドとラムダを備えています。

上記のようなベンチマークはありませんが、これはJava Commonsに似たライブラリの1つのコンポーネントにすぎないという点で優れています。そのため、コマンドラインパーサーやリポジトリの実装なども入手できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.