CSV парсер/считыватель для С#?

Есть ли хорошая и свободная реализация парсера CSV, доступного по какой-то либеральной лицензии? Какой-то аналог SuperCSV для Java, возможно, порт?

Ответ 2

Там хорошая реализация на CodeProject:

Чтобы дать больше номера земли, с CSV файлом 45 МБ, содержащим 145 полей и 50 000 записей, читатель обрабатывал около 30 МБ/сек. Так что в целом, потребовалось 1,5 секунды! Характеристики машины были P4 3,0 ГГц, 1024 МБ.

Ответ 3

Вы можете загрузить 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.

Ответ 4

попробуйте filehelpers Работайте отлично. Я использую его для разбора файла размером 100 МБ каждый день.

Ответ 5

Вы пробовали библиотеку FileHelpers? Он бесплатный, с открытым исходным кодом и может использоваться для разбора CSV файлов.

Ответ 6

Я начал использовать CSV Parser, который является частью CommonLibrary.NET.

Он использует .NET 3.5, имеет простой API и удобные перегрузки/методы и lamda для итераций.

У меня нет никаких эталонных тестов для этого, как описано выше, но приятно, что это всего лишь один компонент библиотеки, подобный Java Commons. Поэтому я также получаю синтаксический анализатор командной строки, реализацию репозитория, между прочим.