is there a good and free implementation of CSV parser available under some liberal licence? Some counterpart of SuperCSV for Java, perhaps a port?
-
2http://stackoverflow.com/questions/3507498/reading-csv-file – Dec 22 '10 at 12:24
-
5using Microsoft.VisualBasic.FileIO.TextFieldParser; – Dec 22 '10 at 12:26
-
1Not constructive? SO admins are so crazy. This is a VERY helpful question. – richard Sep 20 '14 at 03:32
6 Answers

- 2,237
- 27
- 30
- 38

- 26,220
- 11
- 79
- 111
-
24FileHelpers (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. – Konrad Morawski Jul 07 '11 at 13:00
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.

- 113,561
- 39
- 200
- 288
-
(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. – iCollect.it Ltd May 21 '12 at 12:55
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.
-
1this 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: http://www.csvreader.com/csv_benchmarks.php – Meringros Oct 03 '10 at 19:12
-
5
-
Two links that maybe useful with regards to this answer: 1. [C# Tutorial - Using The Built In OLEDB CSV Parser](http://tech.pro/tutorial/803/csharp-tutorial-using-the-built-in-oledb-csv-parser) 2. [How To Retrieve Column Schema by Using the DataReader GetSchemaTable Method and Visual C# .NET](http://support.microsoft.com/kb/310107) – shawad Jul 25 '13 at 16:36
try filehelpers Work amazingly well. I am using it to parse a 100 MB file every day.

- 3,468
- 24
- 29

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

- 3,468
- 24
- 29

- 733,204
- 149
- 1,241
- 1,454
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.

- 31
- 1