Siento disentir. Esta es definitivamente una pregunta constructiva y el primer resultado en Google para .net csv library. La evidencia, aunque anecdótica, de mi afirmación es que esta pregunta se ha visto más de 22000 veces en los últimos seis años.
shovavnik
5
verdadero dicho - primer éxito en Google
Robetto
Respuestas:
107
Pruebe CsvHelper . Es tan fácil de usar como FastCsvReader y también escribe. He estado muy contento con FastCsvReader en el pasado, pero necesitaba algo que también escribiera y no estaba contento con FileHelpers.
Leyendo:
var csv =newCsvReader( stream );var myCustomTypeList = csv.GetRecords<MyCustomType>();
Escritura:
var csv =newCsvWriter( stream );
csv.WriteRecords( myCustomTypeList );
Divulgación completa: soy el autor de esta biblioteca.
Gracias, Josh. Le di una oportunidad, y fue rápido y eficiente en memoria. Creo que la documentación podría mejorarse un poco para los usuarios nuevos, pero definitivamente fue suficiente.
Sam
¿Hay alguna manera de usar esta biblioteca sin un tipo personalizado para que pueda iterar a través de la cuadrícula de mi tabla (personalizada) y escribir el encabezado y luego pasar cada campo de fila? Solo estoy buscando una forma de evitar errores en los archivos (escapar correctamente, etc.).
@Zimano No es cierto. Puede leer campos individuales o incluso obtener una matriz de cadenas para la fila. Consulte la documentación. joshclose.github.io/CsvHelper
Josh Close
@JoshClose ¡Oh, es bueno escucharlo, gracias! Solo revisé la guía de introducción aquí: joshclose.github.io/CsvHelper/… y no incluía mi caso de uso. Debería haber buscado más, mis disculpas. Sin embargo, en esa página dice que usar un mapeo de algún tipo es la forma recomendada de usar CsvHelper. ¿Quizás podría ofrecer algunas estrategias de lectura alternativas en ese lugar? Por cierto,
eliminé
21
Hay un par de opciones, justo en el propio marco.
Una de las más fáciles es hacer referencia a Microsoft.VisualBasic y luego usar TextFieldParser . Es un lector de CSV completamente funcional en el marco principal.
Siempre me pregunté por qué estaba en el ensamblado Microsoft.VisualBasic ... ¿Pensó MS que los desarrolladores de C # no usaban CSV?
Thomas Levesque
4
@Thomas: especialmente porque muchos desarrolladores de C # se estremecen ante la idea de incluir un ensamblado de VisualBasic en sus proyectos
2
Sí, hay muchas "golosinas" agradables ahí. Creo que es más porque VB tiene algunas construcciones de lenguaje que realmente no se consideraron en el marco originalmente, pero nunca habrían podido hacer que los usuarios de VB6 cruzaran sin implementarlas. Los espacios de nombres Devices y ApplicationServices tienen todo tipo de cosas útiles.
Reed Copsey
20
@ Roboto, cualquier desarrollador de C # que se avergüence de hacer referencia a Microsoft.VisualBasic en su proyecto es un snob ignorante del lenguaje. Peor aún, no entienden .NET en absoluto.
Sebastien Lorion tiene un gran CSVlector de CodeProject llamado A Fast CSV Reader . Probablemente uno de los mejores para C # y es gratis.
En cuanto a la escritura, solo use StreamWriter.
Aquí hay un código repetitivo para escribir DataGridViewen un archivo:
privatevoid exportDGVToCSV(string filename){if(dataGridView1.Columns.Count!=0){
using (Stream stream =File.OpenWrite(filename)){
stream.SetLength(0);
using (StreamWriter writer =newStreamWriter(stream)){// loop through each row of our DataGridViewforeach(DataGridViewRow row in dataGridView1.Rows){string line =string.Join(",", row.Cells.Select(x => $"{x}"));
writer.WriteLine(line);}
writer.Flush();}};}}
Escribir CSV es fácil: solo use un método de salida de texto normal y sepárelo con comas. Realmente solo necesita una biblioteca / controlador personalizado para leer ...
Reed Copsey
10
@Reed: no es demasiado trivial si desea que las comas y las comillas se escapen correctamente. Ni siquiera estoy seguro de si existe una estandarización para esto, pero es muy común hacerlo.
Stefan Steinegger
26
Escribir CSV es un poco más complejo que eso. Si los datos que desea que se expresen en el archivo CSV contienen comas o líneas nuevas, debe encerrar los datos entre comillas. Si hay una comilla en los datos recién marcados con comillas, entonces debe escapar de las comillas con comillas dobles. Ciertamente podría codificar esa lógica usted mismo, pero sería bueno que una biblioteca lo hiciera por usted.
Bueno, lo hice, pero por alguna extraña razón FileHelpers se rompió al azar. Además, la biblioteca FileHelpers no se ha desarrollado durante mucho tiempo.
Erik Schierboom
1
FileHelpers se desarrollan activamente ahora, consulte GitHub .
Debo decir que los Filehelpers me parecen restrictivos en algunos escenarios y, en su lugar, uso The Fast CSV Reader . En mi experiencia, si no conoce el formato de su archivo CSV o la asignación de importación hasta el tiempo de ejecución, esta es la mejor biblioteca para usar.
.net csv library
. La evidencia, aunque anecdótica, de mi afirmación es que esta pregunta se ha visto más de 22000 veces en los últimos seis años.Respuestas:
Pruebe CsvHelper . Es tan fácil de usar como FastCsvReader y también escribe. He estado muy contento con FastCsvReader en el pasado, pero necesitaba algo que también escribiera y no estaba contento con FileHelpers.
Leyendo:
Escritura:
Divulgación completa: soy el autor de esta biblioteca.
fuente
WriteField
. Consulte los documentos aquí joshclose.github.io/CsvHelperCsvHelper
. ¿Quizás podría ofrecer algunas estrategias de lectura alternativas en ese lugar? Por cierto,Hay un par de opciones, justo en el propio marco.
Una de las más fáciles es hacer referencia a Microsoft.VisualBasic y luego usar TextFieldParser . Es un lector de CSV completamente funcional en el marco principal.
Otra buena alternativa es utilizar conjuntos de datos para leer archivos CSV .
fuente
Sebastien Lorion tiene un gran
CSV
lector de CodeProject llamado A Fast CSV Reader . Probablemente uno de los mejores para C # y es gratis.En cuanto a la escritura, solo use
StreamWriter
.Aquí hay un código repetitivo para escribir
DataGridView
en un archivo:fuente
Sí, aunque supongo que en realidad estás pidiendo detalles.
Prueba FileHelpers
fuente
Hay docenas.
http://www.filehelpers.net/ es uno de los más comunes.
Debo decir que los Filehelpers me parecen restrictivos en algunos escenarios y, en su lugar, uso The Fast CSV Reader . En mi experiencia, si no conoce el formato de su archivo CSV o la asignación de importación hasta el tiempo de ejecución, esta es la mejor biblioteca para usar.
fuente