Analizador / lector de CSV para C #? [cerrado]


89

¿Existe una implementación buena y gratuita del analizador CSV disponible bajo alguna licencia liberal? ¿Alguna contraparte de SuperCSV para Java, quizás un puerto?



5
utilizando Microsoft.VisualBasic.FileIO.TextFieldParser;


1
¿No es constructivo? Los administradores están tan locos. Esta es una pregunta MUY útil.
Richard

Respuestas:


70

24
FileHelpers (para CSV al menos) requiere que "defina una clase que se asigne al registro en la fuente (archivo)", "debe declarar una clase de asignación de registros", etc. y esto no es tan interesante. Me gustaría convertir CSV en un DataTable, sin saber de antemano cuántas columnas esperar.
Konrad Morawski

53

Hay una buena implementación en CodeProject :

Para dar más números reales, con un archivo CSV de 45 MB que contiene 145 campos y 50.000 registros, el lector estaba procesando unos 30 MB / seg. Así que, en general, ¡tomó 1,5 segundos! Las especificaciones de la máquina fueron P4 3.0 GHz, 1024 MB.


(recuperando mi +1): Acabo de romper el lector de CSV rápido de lumenworks en un archivo de 53 Mb. Parece que el almacenamiento en caché de la línea falló después de 43.000 filas y codificó el búfer. Probé Microsoft.VisualBasic.FileIO.TextFieldParsey funcionó.
Gone Coding

11

Puede cargar un archivo CSV en DataTable.

Código de muestra -

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

Asegúrese de compilar su proyecto en un procesador x86. No funciona para x64.


1
esto funcionó bastante bien para mí, ya que quería quedarme con las bibliotecas ODBC u OLEDB integradas. Por cierto, lo siguiente tiene ejemplos de código adicionales para OLEDB y ODBC: csvreader.com/csv_benchmarks.php
Meringros

5
Esto no funciona en 64 bits, por desgracia.
DenNukem


7

prueba filehelpers Funciona increíblemente bien. Lo estoy usando para analizar un archivo de 100 MB todos los días.



3

Comencé a usar CSV Parser que es parte de CommonLibrary.NET .

Utiliza .NET 3.5, tiene una API sencilla y convenientes sobrecargas / métodos y lamda para iteraciones.

No tengo ningún punto de referencia para este como el anterior, pero lo bueno de esto es que es solo un componente de una biblioteca similar a Java Commons. Entonces también obtengo un analizador de línea de comandos, implementación de repositorio, entre otras cosas.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.