Analizar archivo CSV en C#

  1. Analizar archivo CSV con la clase TextFieldParser en C
  2. Analizar archivo CSV con la biblioteca FileHelpers en C

Este tutorial discutirá los métodos para analizar un archivo CSV en C#.

Analizar archivo CSV con la clase TextFieldParser en C

Para usar la clase TextFieldParser, tenemos que hacer referencia a Microsoft.VisualBasic.dll en nuestro código C#. La clase TextFieldParser contiene muchos métodos para analizar archivos de texto estructurado en C#. Podemos leer un archivo CSV con la clase TextFieldParser estableciendo los delimitadores en , con la función SetDelimiters() dentro de la clase TextFieldParser. El siguiente ejemplo de código nos muestra cómo analizar un archivo CSV con la clase TextFieldParser en C#.

using System;
using Microsoft.VisualBasic.FileIO;

namespace parse_csv
{
    class Program
    {
        static void Main(string[] args)
        {
            using (TextFieldParser textFieldParser = new TextFieldParser(@"C:\File\Sheet1.csv"))
            {
                textFieldParser.TextFieldType = FieldType.Delimited;
                textFieldParser.SetDelimiters(",");
                while (!textFieldParser.EndOfData)
                {
                    string[] rows = textFieldParser.ReadFields();
                    
                }
            }
        }
    }
}

En el código anterior, inicializamos la instancia textFieldParser de la clase TextFieldParser especificando la ruta a nuestro archivo CSV en el constructor. Luego configuramos nuestro tipo de campo de texto para que esté delimitado con la función textFieldParser.TextFieldType = FieldType.Delimited y establecemos , como delimitador con la función textFieldParser.SetDelimiter(','). Luego usamos un bucle while para leer el archivo CSV hasta el final con textFieldParser.EndofData. Almacenamos los datos dentro de un array de cadenas con la función ReadFields().

Analizar archivo CSV con la biblioteca FileHelpers en C

La biblioteca FileHelpers se utiliza para leer y escribir datos en archivos, flujos y cadenas en C#. Es una biblioteca de terceros y no viene preinstalada con el marco .NET. Podemos instalarlo fácilmente buscándolo en el administrador de paquetes NuGet en el IDE de Visual Studio. Podemos usar la clase FileHelpersEngine para analizar datos de un archivo CSV en C#. La clase FileHelperEngine obtiene los datos del archivo en objetos de clase en C#. Entonces, primero tenemos que crear una clase de modelo que pueda contener nuestros datos del archivo. La clase contendría campos que representan columnas en el archivo CSV. Podemos usar [DelimitedRecord(",")] para especificar que , se usa aquí como delimitador. Podemos usar la función ReadFile(path) para leer datos dentro de un array de objetos de clase del archivo en la ruta especificada. El siguiente ejemplo de código nos muestra cómo analizar un archivo CSV con la biblioteca FileHelpers en C#.

using FileHelpers;
using System;
namespace parse_csv
{
    [DelimitedRecord(",")]
    public class Record
    {
        public string Name;

        public string Age;
    }
    class Program
    {
        static void Main(string[] args)
        {
            var fileHelperEngine = new FileHelperEngine<Record>();
            var records = fileHelperEngine.ReadFile(@"C:\File\records.csv");

            foreach (var record in records)
            {
                Console.WriteLine(record.Name);
                Console.WriteLine(record.Age);
            }
        }
    }
}

Producción:

Name
Age
MMA
22
SDA
19
SHA
11

En el código anterior, leemos los datos dentro del archivo C:\File\records.csv y los guardamos en un array de objetos de la clase Record con la biblioteca FileHelpers en C#.