¿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?
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.
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 -
staticDataTableCsvToDataTable(string strFileName){DataTable dataTable =newDataTable("DataTable Name");
using (OleDbConnection conn =newOleDbConnection("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 =newSystem.Data.OleDb.OleDbDataAdapter(strQuery, conn);
adapter.Fill(dataTable);}return dataTable;}
Asegúrese de compilar su proyecto en un procesador x86. No funciona para x64.
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
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.
Respuestas:
Biblioteca de código abierto FileHelpers .
fuente
Hay una buena implementación en CodeProject :
fuente
Microsoft.VisualBasic.FileIO.TextFieldParse
y funcionó.Puede cargar un archivo CSV en DataTable.
Código de muestra -
Asegúrese de compilar su proyecto en un procesador x86. No funciona para x64.
fuente
prueba filehelpers Funciona increíblemente bien. Lo estoy usando para analizar un archivo de 100 MB todos los días.
fuente
¿Ha probado la biblioteca FileHelpers? Es gratuito, de código abierto y se puede utilizar para analizar archivos CSV.
fuente
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.
fuente