¿Existe una forma predeterminada / oficial / recomendada de analizar archivos CSV en C #? No quiero rodar mi propio analizador.
Además, he visto casos de personas que utilizan ODBC / OLE DB para leer CSV a través del controlador de texto, y muchas personas desalientan esto debido a sus "inconvenientes". ¿Cuáles son estos inconvenientes?
Idealmente, estoy buscando una manera a través de la cual pueda leer el CSV por nombre de columna, usando el primer registro como los nombres de encabezado / campo. Algunas de las respuestas dadas son correctas, pero básicamente trabajan para deserializar el archivo en clases.
Un analizador CSV ahora es parte de .NET Framework.
Agregue una referencia a Microsoft.VisualBasic.dll (funciona bien en C #, no importa el nombre)
Los documentos están aquí - Clase TextFieldParser
PD: si necesita un exportador CSV , pruebe CsvExport ( discl : soy uno de los contribuyentes)
fuente
TextFieldParser.ReadLine()
. Ver documentos de TextFieldParserCsvHelper (una biblioteca que mantengo) leerá un archivo CSV en objetos personalizados.
A veces no eres dueño de los objetos en los que estás intentando leer. En este caso, puede usar el mapeo fluido porque no puede poner atributos en la clase.
EDITAR:
CsvReader ahora requiere que CultureInfo se pase al constructor ( https://github.com/JoshClose/CsvHelper/issues/1441 ).
Ejemplo:
fuente
En una aplicación de negocios, uso el proyecto Open Source en codeproject.com, CSVReader .
Funciona bien y tiene buen rendimiento. Hay algunos puntos de referencia en el enlace que proporcioné.
Un ejemplo simple, copiado de la página del proyecto:
Como puede ver, es muy fácil trabajar con él.
fuente
Sé que es un poco tarde, pero acabo de encontrar una biblioteca
Microsoft.VisualBasic.FileIO
que tieneTextFieldParser
clase para procesar archivos csv.fuente
Si solo necesita leer archivos csv, le recomiendo esta biblioteca: un lector CSV rápido
Si también necesita generar archivos csv, use este: FileHelpers
Ambos son gratuitos y de código abierto.
fuente
Aquí hay una clase auxiliar que uso a menudo, en caso de que alguien vuelva a este hilo (quería compartirlo).
Lo uso por la simplicidad de portarlo a proyectos listos para usar:
Y úsalo como:
[Ayuda CSV actualizada: error corregido donde el último personaje de la nueva línea creó una nueva línea]
fuente
Esta solución está utilizando el ensamblado oficial Microsoft.VisualBasic para analizar CSV.
Ventajas:
Código:
fuente
He escrito TinyCsvParser para .NET, que es uno de los analizadores .NET más rápidos y altamente configurable para analizar casi cualquier formato CSV.
Se publica bajo licencia MIT:
Puede usar NuGet para instalarlo. Ejecute el siguiente comando en la consola de Package Manager .
Uso
Imagine que tenemos una lista de personas en un archivo CSV
persons.csv
con su nombre, apellido y fecha de nacimiento.El modelo de dominio correspondiente en nuestro sistema podría verse así.
Al usar TinyCsvParser, debe definir la asignación entre las columnas en los datos CSV y la propiedad en su modelo de dominio.
Y luego podemos usar el mapeo para analizar los datos CSV con a
CsvParser
.Guía del usuario
Una guía de usuario completa está disponible en:
fuente
Aquí está mi implementación KISS ...
fuente
Hace algún tiempo escribí una clase simple para lectura / escritura CSV basada en la
Microsoft.VisualBasic
biblioteca. Con esta clase simple, podrá trabajar con CSV como con una matriz de 2 dimensiones. Puedes encontrar mi clase en el siguiente enlace: https://github.com/ukushu/DataExporterEjemplo simple de uso:
Para leer el encabezado solo necesitas leer las
csv.Rows[0]
celdas :)fuente
Solución de archivo de fuente única para necesidades de análisis directo, útil. Se ocupa de todos los casos extremos desagradables. Como la normalización de nuevas líneas y el manejo de nuevas líneas en literales de cadena entre comillas. ¡De nada!
Si su archivo CSV tiene un encabezado, simplemente lea los nombres de columna (y calcule los índices de columna) de la primera fila. Simple como eso.
Tenga en cuenta que
Dump
es un método LINQPad, es posible que desee eliminarlo si no está utilizando LINQPad.fuente
Otro de esta lista, Cinchoo ETL , una biblioteca de código abierto para leer y escribir múltiples formatos de archivo (CSV, archivo plano, Xml, JSON, etc.)
El siguiente ejemplo muestra cómo leer un archivo CSV rápidamente (no se requiere un objeto POCO)
El siguiente ejemplo muestra cómo leer un archivo CSV usando un objeto POCO
Consulte los artículos en CodeProject sobre cómo usarlo.
fuente
¿Basado en la publicación de Unlimit en Cómo dividir correctamente un CSV usando la función C # split ()? :
NOTA: esto no maneja comas escapadas / anidadas, etc., y por lo tanto solo es adecuado para ciertas listas CSV simples.
fuente
Este código lee csv en DataTable:
fuente
Si alguien quiere un fragmento, puede introducir su código sin tener que vincular una biblioteca o descargar un paquete. Aquí hay una versión que escribí:
fuente
Aquí hay una solución corta y simple.
fuente