Синтаксичний аналізатор / читач CSV для C #? [зачинено]


89

чи є хороша та безкоштовна реалізація синтаксичного аналізатора CSV, доступна за якоюсь ліберальною ліцензією? Якийсь аналог SuperCSV для Java, можливо, порт?



5
використання Microsoft.VisualBasic.FileIO.TextFieldParser;


1
Не конструктивний? ТАК адміністратори такі божевільні. Це ДУЖЕ корисне запитання.
Річард

Відповіді:


70

24
FileHelpers (принаймні для CSV) вимагає, щоб ви "визначили клас, який відображається на запис у джерелі (файлі)", "ви повинні оголосити клас зіставлення записів" тощо, і це не так гаряче. Я хотів би перетворити CSV у таблицю даних, не знаючи заздалегідь, скільки стовпців очікувати.
Конрад Моравський

53

У CodeProject є приємна реалізація :

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


. Схоже, кешування рядків не вдалося після 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



4

Ви пробували бібліотеку FileHelpers? Він безкоштовний з відкритим кодом і може використовуватися для синтаксичного аналізу файлів CSV.


3

Я почав використовувати синтаксичний аналізатор CSV, який є частиною CommonLibrary.NET .

Він використовує .NET 3.5, має простий API та зручні перевантаження / методи та lamda для ітерацій.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.