Trabajo con CSV en C# (.NET): Guía Completa

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

Trabajo con CSV en C# (.NET): Guía Completa



CSV (Valores Separados por Comas) es uno de los formatos más comunes para el intercambio de datos tabulares. En el ecosistema de C# (.NET) existen varios enfoques para trabajar con archivos CSV: desde el análisis sintáctico manual hasta el uso de potentes bibliotecas de terceros. En este artículo, analizaremos todas las formas principales de leer, escribir y procesar datos CSV en .NET.



1. Análisis sintáctico manual de CSV con StreamReader



La forma más sencilla es usar las clases estándar StreamReader y String.Split. Sin embargo, este método no maneja casos complejos (comillas, comas dentro de los datos, saltos de línea).



using System;using System.IO;using System.Linq;

public class CsvSimpleReader{ public void ReadCsv(string filePath) { using (var reader = new StreamReader(filePath)) { while (!reader.EndOfStream) { var line = reader.ReadLine(); var values = line.Split(','); Console.WriteLine(string.Join(" | ", values)); } } }}


Desventajas: no maneja comas escapadas ni comillas. Para proyectos reales, use métodos más robustos.



2. Uso de Microsoft.VisualBasic.FileIO.TextFieldParser (para .NET Framework)



En .NET Framework hay un analizador sintáctico de CSV integrado: TextFieldParser. Maneja correctamente comillas y delimitadores.



using Microsoft.VisualBasic.FileIO;using System;using System.IO;

public class CsvTextFieldParser{ public void ParseCsv(string filePath) { using (var parser = new TextFieldParser(filePath)) { parser.TextFieldType = FieldType.Delimited; parser.SetDelimiters(",");

while (!parser.EndOfData) { string[] fields = parser.ReadFields(); Console.WriteLine(string.Join(" | ", fields)); } } }}


Importante: En .NET Core / .NET 5+ esta clase está disponible a través del paquete Microsoft.VisualBasic (NuGet).



3. Biblioteca CsvHelper (método recomendado)



CsvHelper es la biblioteca más popular para trabajar con CSV en .NET. Soporta mapeo a clases, consultas LINQ, configuración de delimitadores y codificaciones.



Instalación a través de NuGet:

Install-Package CsvHelper


3.1 Lectura de CSV a una lista de objetos



using System.Globalization;using CsvHelper;using CsvHelper.Configuration;using System.IO;using System.Linq;using System.Collections.Generic;

public class Person{ public string Name { get; set; } public int Age { get; set; } public string Email { get; set; }}

public void ReadCsvWithCsvHelper(string filePath){ var config = new CsvConfiguration(CultureInfo.InvariantCulture) { HasHeaderRecord = true, Delimiter = ",", MissingFieldFound = null };

using (var reader = new StreamReader(filePath)) using (var csv = new CsvReader(reader, config)) { var records = csv.GetRecords<Person>().ToList(); foreach (var person in records) { Console.WriteLine($"{person.Name}, {person.Age}, {person.Email}"); } }}


3.2 Escritura de CSV desde una colección de objetos



public void WriteCsvWithCsvHelper(string filePath, List<Person> people){    using (var writer = new StreamWriter(filePath))    using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))    {        csv.WriteRecords(people);    }}


3.3 Gestión manual de campos (sin mapeo)



public void ManualCsvWrite(string filePath){    using (var writer = new StreamWriter(filePath))    using (va                    

Recommendations