Trabalhando com CSV em C# (.NET): Guia Completo

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalhando com CSV em C# (.NET): Guia Completo



CSV (Comma-Separated Values) é um dos formatos mais comuns para troca de dados tabulares. No ecossistema C# (.NET), existem várias abordagens para trabalhar com arquivos CSV: desde o parsing manual até o uso de bibliotecas de terceiros poderosas. Neste artigo, abordaremos todas as principais formas de ler, escrever e processar dados CSV no .NET.



1. Parsing manual de CSV com StreamReader



A maneira mais simples é usar as classes padrão StreamReader e String.Split. No entanto, este método não lida com casos complexos (aspas, vírgulas dentro dos dados, quebras de linha).



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)); } } }}


Desvantagens: não processa vírgulas escapadas e aspas. Para projetos reais, use métodos mais confiáveis.



2. Usando Microsoft.VisualBasic.FileIO.TextFieldParser (para .NET Framework)



No .NET Framework, há um parser CSV integrado — TextFieldParser. Ele lida corretamente com aspas e 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: No .NET Core / .NET 5+, esta classe está disponível através do pacote Microsoft.VisualBasic (NuGet).



3. Biblioteca CsvHelper (método recomendado)



CsvHelper é a biblioteca mais popular para trabalhar com CSV no .NET. Ela suporta mapeamento para classes, consultas LINQ, configuração de delimitadores e codificações.



Instalação via NuGet:

Install-Package CsvHelper


3.1 Leitura de CSV para uma 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 Escrita de CSV a partir de uma coleção 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 Gerenciamento manual de campos (sem mapeamento)



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

Recommendations