88

is there a good and free implementation of CSV parser available under some liberal licence? Some counterpart of SuperCSV for Java, perhaps a port?

3
  • 2
    stackoverflow.com/questions/3507498/reading-csv-file Commented Dec 22, 2010 at 12:24
  • 5
    using Microsoft.VisualBasic.FileIO.TextFieldParser; Commented Dec 22, 2010 at 12:26
  • 1
    Not constructive? SO admins are so crazy. This is a VERY helpful question. Commented Sep 20, 2014 at 3:32

6 Answers 6

71

FileHelpers Open Source Library.

Sign up to request clarification or add additional context in comments.

1 Comment

FileHelpers (for CSV at least) requires that you "define a class that maps to the record in the source (file)", "you must declare a Record Mapping Class" etc. and this is not so hot. I'd like to convert CSV into a DataTable, not knowing in advance how many columns to expect.
53

There's a nice implementation on CodeProject:

To give more down to earth numbers, with a 45 MB CSV file containing 145 fields and 50,000 records, the reader was processing about 30 MB/sec. So all in all, it took 1.5 seconds! The machine specs were P4 3.0 GHz, 1024 MB.

1 Comment

(taking back my +1): I just broke the lumenworks Fast CSV reader on a 53Mb file. Looks like the line caching failed after 43,000 rows and scrambled the buffer. Tried the Microsoft.VisualBasic.FileIO.TextFieldParse and it did the trick.
12

You can load a CSV file to DataTable.

Sample code -

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;
}

Make sure you compile your project to x86 processor. It doesn't work for x64.

3 Comments

this worked pretty well for me since I wanted to stay with the built-in ODBC or OLEDB libraries. Btw, the following has additional code samples for both OLEDB and ODBC: csvreader.com/csv_benchmarks.php
This is not working on 64 bit, alas.
7

try filehelpers Work amazingly well. I am using it to parse a 100 MB file every day.

Comments

4

Have you tried the FileHelpers library? It's free, open source and can be used to parse CSV files.

Comments

3

I've started using CSV Parser that is part of the CommonLibrary.NET.

It uses .NET 3.5, has an easy API, and convenient overloads/methods & lamda's for iterations.

I don't have any benchmarks for this one like above, but nice thing about this is that it's just one component of a library similar to Java Commons. So I also get a Command-line parser, Repository implementation among other things.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.