CsvHelper para C# (.NET): guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

CsvHelper para C# (.NET): guía completa con ejemplos

1. ¿Qué es y para qué sirve?

La librería CsvHelper es una herramienta potente y flexible para leer y escribir archivos CSV en el ecosistema .NET. Proporciona a los desarrolladores una API de alto nivel que abstrae la complejidad de trabajar con el formato CSV, permitiéndoles centrarse en la lógica de negocio de la aplicación. A diferencia de métodos primitivos como String.Split(','), CsvHelper maneja correctamente caracteres escapados, comillas, campos multilínea y diferentes configuraciones culturales (separadores, formatos de fecha y número).

¿Para qué sirve? En el desarrollo moderno, CSV sigue siendo uno de los formatos más comunes para el intercambio de datos: exportación de informes, importación desde Excel, carga de configuraciones, intercambio con sistemas heredados y migración de datos. CsvHelper convierte la tediosa tarea de analizar CSV en código limpio y declarativo, utilizando mapeo de clases (atributos o Fluent API), conversión automática de tipos y validación integrada. Esto ahorra horas de desarrollo y reduce la cantidad de errores relacionados con el análisis manual de cadenas.

Características clave: soporte para .NET Standard 2.0+ (funciona en todas partes: .NET Framework, .NET Core, .NET 5+), procesamiento por streaming (no carga todo el archivo en memoria), convertidores de tipos personalizados, detección de delimitadores, trabajo con encabezados e índices, y soporte completo para operaciones asíncronas (ReadAsync/WriteAsync).

2. Instalación

La instalación se realiza a través del administrador de paquetes NuGet. Ejecuta uno de los siguientes comandos en la consola del administrador de paquetes o en la terminal de .NET CLI:

dotnet add package CsvHelper

o a través de la Package Manager Console:

Install-Package CsvHelper

Para la versión 31.0.2 (actual en el momento de escribir esto) se requiere .NET Standard 2.0 o superior. Después de la instalación, agrega la directiva using en tu código:

using CsvHelper;
using CsvHelper.Configuration;
using System.Globalization;

3. Inicio rápido — ejemplo mínimo funcional

Vamos a crear un modelo simple y escribir/leer un archivo CSV.

using System.Globalization;
using CsvHelper;
using CsvHelper.Configuration;

public class Persona
{
    public string Nombre { get; set; }
    public int Edad { get; set; }
    public string Email { get; set; }
}

// Escritura
var personas = new List<Persona>
{
    new Persona { Nombre = "Ana", Edad = 30, Email = "ana@ejemplo.com" },
    new Persona { Nombre = "Carlos", Edad = 25, Email = "carlos@ejemplo.com" }
};

using (var writer = new StreamWriter("personas.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
    csv.WriteRecords(personas);
}

// Lectura
using (var reader = new StreamReader("personas.csv"))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
    var registros = csv.GetRecords<Persona>().ToList();
    foreach (var p in registros)
        Console.WriteLine($"{p.Nombre}, {p.Edad}, {p.Email}");
}

Este ejemplo muestra el ciclo básico: crear un objeto CsvWriter o CsvReader, pasar el flujo y la cultura, y llamar al método de escritura/lectura. Observa el uso de CultureInfo.InvariantCulture — esto garantiza que los separadores decimales y las fechas se escriban en un formato uniforme (punto para números, ISO para fechas).

4. Métodos/funciones/clases principales

Veamos las clases y métodos clave de la librería. Cada método incluye su firma, descripción y un ejemplo práctico.

4.1. CsvReader.GetRecords<T>()

Firma: public IEnumerable<T

Recommendations