Trabalhando com CSV em C# (.NET): bibliotecas e exemplos de código

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): do parsing simples à biblioteca avançada



CSV (Comma-Separated Values) — um dos formatos mais comuns para troca de dados tabulares. No ecossistema .NET, existem várias abordagens para trabalhar com CSV: desde ferramentas nativas até bibliotecas especializadas. Neste artigo, abordaremos todas as principais formas, mostraremos exemplos de código e ajudaremos você a escolher a ferramenta ideal para o seu projeto.



1. Ferramentas nativas do .NET (parsing manual)

A maneira mais simples é usar as classes StreamReader e String.Split. No entanto, este método não considera o escape de aspas e vírgulas dentro dos campos, sendo adequado apenas para arquivos CSV simples, sem dados complexos.



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

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


Desvantagens: não trata aspas, não suporta campos multilinha, sem tipagem.



2. Usando TextFieldParser (Microsoft.VisualBasic)

A classe TextFieldParser do namespace Microsoft.VisualBasic.FileIO consegue processar corretamente CSV com aspas e delimitadores. Para usá-la, adicione uma referência ao assembly Microsoft.VisualBasic.



using Microsoft.VisualBasic.FileIO;using System;

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

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


Este método já é melhor, mas ainda exige mapeamento manual dos campos para objetos.



3. Biblioteca CsvHelper — o padrão ouro

CsvHelper é a biblioteca mais popular para trabalhar com CSV em .NET. Ela oferece suporte completo ao padrão RFC 4180, mapeamento automático para classes, suporte a LINQ e alta performance.



Instalação

dotnet add package CsvHelper


Exemplo de leitura de CSV para uma lista de objetos

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

public class Person{ public int Id { get; set; } public string Name { get; set; } public string Email { get; set; } public DateTime BirthDate { get; set; }}

public class CsvHelperReader{ public static List<Person> ReadPeople(string filePath) { using (var reader = new StreamReader(filePath)) using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture)) { return csv.GetRecords<Person>().ToList(); } }}


Exemplo de escrita de CSV a partir de uma coleção

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


Configuração avançada

var config = new CsvConfiguration(CultureInfo.InvariantCulture){    HasHeaderRec                    

Recommendations