Leer un archivo CSV con C#

Muchas veces cuando programamos una aplicación es necesario interactuar con otros archivos o crearlos, uno de los archivos estándar mas utilizados para crear archivos en base a una base de datos o sobre todo tipo de archivos es el XML por ser el estándar, sin embargo existen otras alternativas mas específicamente cuando queremos manejar archivos creados desde una BD en Excel que es uno de los software que mas empresas manejan para uso de documentos que involucren datos o cantidades, por ser el estándar en el mercado de Software de este tipo, es verdad que el XML es mas complejo tiene una mejor y mas solida estructura pero puede darse el caso que necesitemos algo mas.

Los CSV (Comma Separated Value) son como su nombre lo dice archivos de texto cuya separación se especifica con una coma, si quieres investigar un poco mas sobre su estructura puedes buscar un poco mas de ellos en Google, pero ahora veamos como leer un archivo de este tipo.


Tutorial C#

Esta necesidad surgió hacia mi debido a que en un proyecto tuve que utilizarlos debido a que debía encargarse de manejar una gran cantidad de datos que en un XML seria un tamaño enorme y el dispositivo móvil tenia muchas limitaciones en cuanto a memoria, una vez dicho esto pasemos al código:


Primero que nada necesitamos el método que se encargara de leer el archivo, de texto y darle su respectiva estructura, en este caso al leer el archivo lo almacenaremos en un Datatable para poder posteriormente cargar un Grid o hacer cualquier cosa que necesitemos.

Este código lo encontré en varios sitios de Internet y era el mismo en todos los sitios donde lo busque, incluso es el mismo patrocinado por Microsoft para manejar estos archivos, pero yo tuve un pequeño problema con lo que seguía para utilizarlo el y aquí va mi modificación para resolverlo. Yo necesitaba cargar un Gridview y que la primera fila me la reconociera como el Nombre de cada una de las columnas sin embargo esto por si solo no lo hacia así que aplique un pequeño truco, como yo sabia que Nombre tendría mi primera columna agregue al código ese nombre para que tomara eso como una indicación de que esa fila contenía el nombre de las columnas así fue como quedo al final:


Una vez ejecutada esta instrucción nuestro DataTable habrá sido llenado con lo que este dentro del CSV, aunque debe tener una estructura del tipo tabla, mismo numero de columnas en todas las filas sobre todo, espero les haya sido de utilidad, saludos.

Quizás también te Interese:



Comentarios

  1. Hay otra forma mucho más sencilla de saltarte la primera fila y sin tener que saber como se llama la primera columna

    for (int n = 1; n < listaCSV.Count;n++ )
    {
    string[] row = listaCSV[n];
    dt.Rows.Add(row);
    }

    Un saludo y gracias por la info

    ResponderEliminar
    Respuestas
    1. Igualmente gracias por compartir esa información, aun no lo he probado esperemos que alguien mas nos confirme que le funciona correctamente, saludos.

      Eliminar
  2. Buena tarde, me gustaría ver el codigo completo porque me está generando error en la parte del Try. Gracias

    ResponderEliminar
  3. El código funcionaria solo si el CSV no contiene cadenas de caracteres que contenga el carácter de separación.

    Ejm;
    CAMPO1, CAMPO2,CAMPO3
    V1,"Esto dará tres valores, en ves de uno, por tener comas",V3

    ResponderEliminar
  4. Amigo, que sucede si el delimitador es ";" ?

    ResponderEliminar
  5. el problema y el dolor de cabeza es cuando los campos string contienen las comas por todos lados.

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Llenar un DropdownList con Datos ASP.NET C#

Añadir Items a un ListBox desde un Control Textbox C#

Crear un DataTable desde Codigo