Ir para o conteúdo do rodapé
USANDO O IRONXL

Biblioteca CSV em C#: Tutorial completo usando IronXL

Trabalhar com arquivos CSV em C# requer uma biblioteca que lida com mais do que apenas parsing de linhas simples. Você precisa de detecção confiável de codificação, manejo correto de delimitadores, tipagem forte, e, idealmente, a capacidade de mover dados entre CSV e Excel sem manter duas dependências separadas. IronXL oferece tudo isso em uma única biblioteca .NET -- sem necessidade de Microsoft Office, sem interop COM e sem soluções frágeis. Seja processando arquivos de dados planos em um servidor, construindo um pipeline de dados ou oferecendo um download de planilha para usuários, o IronXL oferece uma API consistente para cada formato.

Como Configurar Uma Biblioteca de Planilhas C#?

Instalar o IronXL leva menos de um minuto através do NuGet. Abra o Console do Gerenciador de Pacotes no Visual Studio e execute o comando abaixo ou use o .NET CLI de qualquer terminal:

Install-Package IronXL
dotnet add package IronXL
Install-Package IronXL
dotnet add package IronXL
SHELL

Após a instalação do pacote, adicione o namespace a qualquer arquivo onde você deseje trabalhar com dados de planilhas:

using IronXL;
using IronXL;
$vbLabelText   $csharpLabel

O IronXL tem como alvo .NET Framework 4.6.2+ e todas as versões modernas do .NET (Core, 5, 6, 7, 8, 9 e 10). Ele roda em Windows, Linux e macOS, tornando-o adequado tanto para ferramentas de desktop quanto para cargas de trabalho em servidores em contêineres. Visite o guia de instalação do IronXL para instruções passo a passo que cobrem fontes de pacotes e ativação de licença.

Como Ler Arquivos CSV em C#?

Ler um arquivo CSV com IronXL segue o mesmo padrão que carregar qualquer planilha. Chame WorkBook.Load com o caminho do arquivo e o IronXL infere o formato da extensão -- nenhuma configuração extra é necessária:

// Load a CSV file into a WorkBook
WorkBook workBook = WorkBook.Load("sales_data.csv");

// Access the default worksheet
WorkSheet workSheet = workBook.DefaultWorkSheet;

// Read individual cells by Excel-style address
string customerName = workSheet["A2"].StringValue;
decimal orderAmount = workSheet["B2"].DecimalValue;

// Iterate rows, starting at index 1 to skip the header
for (int i = 1; i < workSheet.Rows.Count(); i++)
{
    var row = workSheet.Rows[i];
    Console.WriteLine($"Customer: {row.Columns[0].Value}, Amount: {row.Columns[1].Value}");
}
// Load a CSV file into a WorkBook
WorkBook workBook = WorkBook.Load("sales_data.csv");

// Access the default worksheet
WorkSheet workSheet = workBook.DefaultWorkSheet;

// Read individual cells by Excel-style address
string customerName = workSheet["A2"].StringValue;
decimal orderAmount = workSheet["B2"].DecimalValue;

// Iterate rows, starting at index 1 to skip the header
for (int i = 1; i < workSheet.Rows.Count(); i++)
{
    var row = workSheet.Rows[i];
    Console.WriteLine($"Customer: {row.Columns[0].Value}, Amount: {row.Columns[1].Value}");
}
$vbLabelText   $csharpLabel

O objeto WorkBook expõe o modelo completo da planilha. Você acessa células com a notação Excel familiar, como "A2", e propriedades de conversão embutidas -- StringValue, DecimalValue, IntValue, DateTimeValue -- lidam com a coerção de tipos para que você não precise analisar strings manualmente.

Quais Opções de Endereçamento de Célula estão Disponíveis?

Além do acesso a células individuais, o IronXL suporta notação de intervalos e iteração de linhas/colunas. Você pode endereçar um bloco retangular de células com uma expressão de intervalo como workSheet["A2:C10"] e iterar por ele como uma coleção plana. Isso é útil quando você deseja validar ou transformar um bloco conhecido de dados sem escrever loops aninhados:

// Access a range and print each value
foreach (var cell in workSheet["A2:C10"])
{
    Console.WriteLine($"{cell.AddressString}: {cell.Value}");
}
// Access a range and print each value
foreach (var cell in workSheet["A2:C10"])
{
    Console.WriteLine($"{cell.AddressString}: {cell.Value}");
}
$vbLabelText   $csharpLabel

Para contagens de linhas dinâmicas, a coleção workSheet.Rows reflete automaticamente os dados carregados, então você não precisa definir contagens de linhas manualmente. Revise o tutorial de leitura de CSV em C# para mais padrões, incluindo detecção de cabeçalho e arquivos multi-codificação.

Como Mapear Linhas de CSV para Objetos Personalizados?

Um requisito comum é converter dados tabulares de CSV em uma coleção tipada. Você pode iterar sobre as linhas e projetar cada uma em uma classe simples de C#:

public record SalesRecord(string Customer, decimal Amount, DateTime OrderDate);

WorkBook workBook = WorkBook.Load("sales_data.csv");
WorkSheet workSheet = workBook.DefaultWorkSheet;

var records = new List<SalesRecord>();

// Start at row 1 to skip the header row (row 0)
for (int i = 1; i < workSheet.Rows.Count(); i++)
{
    var row = workSheet.Rows[i];
    records.Add(new SalesRecord(
        Customer: row.Columns[0].StringValue,
        Amount: row.Columns[1].DecimalValue,
        OrderDate: row.Columns[2].DateTimeValue
    ));
}
public record SalesRecord(string Customer, decimal Amount, DateTime OrderDate);

WorkBook workBook = WorkBook.Load("sales_data.csv");
WorkSheet workSheet = workBook.DefaultWorkSheet;

var records = new List<SalesRecord>();

// Start at row 1 to skip the header row (row 0)
for (int i = 1; i < workSheet.Rows.Count(); i++)
{
    var row = workSheet.Rows[i];
    records.Add(new SalesRecord(
        Customer: row.Columns[0].StringValue,
        Amount: row.Columns[1].DecimalValue,
        OrderDate: row.Columns[2].DateTimeValue
    ));
}
$vbLabelText   $csharpLabel

Essa abordagem separa claramente a lógica de parsing da lógica de negócios e torna cada registro fortemente tipado ao longo do restante do seu aplicativo.

Como Usar uma Biblioteca CSV em C# para Ler e Escrever Arquivos: Figura 1 - Saída do arquivo CSV lido

Como Escrever Arquivos CSV em C#?

Criar um arquivo CSV do zero envolve três etapas: criar um WorkBook, preencher um WorkSheet e chamar SaveAsCsv. O processo espelha como você construiria qualquer planilha, o que mantém a API consistente, independentemente do formato de saída:

// Create a new workbook and worksheet
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("inventory");

// Write header row
workSheet["A1"].Value = "Product";
workSheet["B1"].Value = "Quantity";
workSheet["C1"].Value = "Price";

// Write data rows
workSheet["A2"].Value = "Widget A";
workSheet["B2"].Value = 250;
workSheet["C2"].Value = 9.99;

workSheet["A3"].Value = "Gadget B";
workSheet["B3"].Value = 120;
workSheet["C3"].Value = 24.50;

// Export to CSV
workBook.SaveAsCsv("inventory.csv");
// Create a new workbook and worksheet
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("inventory");

// Write header row
workSheet["A1"].Value = "Product";
workSheet["B1"].Value = "Quantity";
workSheet["C1"].Value = "Price";

// Write data rows
workSheet["A2"].Value = "Widget A";
workSheet["B2"].Value = 250;
workSheet["C2"].Value = 9.99;

workSheet["A3"].Value = "Gadget B";
workSheet["B3"].Value = 120;
workSheet["C3"].Value = 24.50;

// Export to CSV
workBook.SaveAsCsv("inventory.csv");
$vbLabelText   $csharpLabel

SaveAsCsv lida com a colocação de delimitadores, citação de campos que contêm vírgulas e normalização de nova linha. Você não precisa gerenciar nada disso manualmente. IronXL preserva tipos numéricos durante a exportação para que ferramentas posteriores como Excel ou pandas leiam números como números, e não como cadeias de texto citadas.

Como você exporta um DataTable para CSV?

Muitas aplicações recuperam dados de um banco de dados em um DataTable. IronXL pode inserir um DataTable inteiro em uma planilha com uma única chamada, tornando exportações em massa diretas:

DataTable dataTable = GetProductsFromDatabase();

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("products");

workSheet.InsertDataTable(dataTable, "A1");

workBook.SaveAsCsv("products.csv");
DataTable dataTable = GetProductsFromDatabase();

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("products");

workSheet.InsertDataTable(dataTable, "A1");

workBook.SaveAsCsv("products.csv");
$vbLabelText   $csharpLabel

O método InsertDataTable escreve cabeçalhos de coluna do esquema DataTable e preenche todas as linhas a partir do endereço que você fornece. Para conjuntos de dados maiores, isso é muito mais eficiente do que percorrer as linhas manualmente. Consulte a documentação de exportação para CSV para opções, incluindo delimitadores personalizados e configurações de codificação.

Como Usar uma Biblioteca CSV em C# para Ler e Escrever Arquivos: Figura 2 - Arquivo CSV recém-criado usando IronXL

Como você converte entre CSV e Excel em C#?

Uma das capacidades mais valiosas que o IronXL oferece é a conversão bidirecional entre os formatos CSV e Excel. A API é simétrica -- Load lê qualquer formato suportado, e a família de métodos Save grava no formato de destino:

// Convert CSV to Excel
WorkBook csvWorkBook = WorkBook.Load("data.csv");
csvWorkBook.SaveAs("data.xlsx");

// Convert Excel back to CSV
WorkBook xlsxWorkBook = WorkBook.Load("report.xlsx");
xlsxWorkBook.SaveAsCsv("report.csv");
// Convert CSV to Excel
WorkBook csvWorkBook = WorkBook.Load("data.csv");
csvWorkBook.SaveAs("data.xlsx");

// Convert Excel back to CSV
WorkBook xlsxWorkBook = WorkBook.Load("report.xlsx");
xlsxWorkBook.SaveAsCsv("report.csv");
$vbLabelText   $csharpLabel

Essas conversões mantêm a integridade dos dados. Valores numéricos permanecem numéricos, campos de data mantêm seu tipo, e resultados de fórmulas são avaliados para seus valores calculados antes da gravação. Quando você converte um arquivo Excel com várias folhas para CSV, o IronXL cria automaticamente um arquivo CSV separado para cada planilha:

WorkBook multiSheetWorkBook = WorkBook.Load("quarterly_report.xlsx");

// Produces: quarterly_report.Sheet1.csv, quarterly_report.Sheet2.csv, etc.
multiSheetWorkBook.SaveAsCsv("quarterly_report.csv");
WorkBook multiSheetWorkBook = WorkBook.Load("quarterly_report.xlsx");

// Produces: quarterly_report.Sheet1.csv, quarterly_report.Sheet2.csv, etc.
multiSheetWorkBook.SaveAsCsv("quarterly_report.csv");
$vbLabelText   $csharpLabel

Esse comportamento é particularmente útil para pipelines de relatórios onde consumidores posteriores esperam um tópico por arquivo. O tutorial de gravação de CSV aborda opções adicionais, como especificar o caractere delimitador e controlar quais folhas são incluídas na exportação.

Como Usar uma Biblioteca CSV em C# para Ler e Escrever Arquivos: Figura 3 - Arquivo Excel com várias páginas salvo como arquivos CSV separados

Como Usar uma Biblioteca CSV em C# para Ler e Escrever Arquivos: Figura 4 - Arquivo no formato Excel original vs. o arquivo CSV convertido

!{--010011000100100101000010010100100100000101010010010110010101111101000111010001010101010100010111110101001101010100010000010101001001010100010001010100010001011111010101110100100 101010100010010000101111101010000010100100111101000100010101010100001101010100010111110101010001010010010010010010010100000101001100010111110100001001001100010011110100001101001011--}

Por que bibliotecas somente CSV não atendem a projetos reais?

Muitos desenvolvedores C# começam com CsvHelper ou o Analisador de Campo de Texto de Microsoft.VisualBasic. Ambos são ferramentas capazes para fluxos de trabalho somente CSV. A diferença aparece quando os requisitos se expandem: um interessado pede por um download Excel ao invés de CSV, o financeiro precisa que fórmulas sejam preservadas, ou a política de segurança requer arquivos protegidos por senha. Nesse ponto, uma biblioteca somente CSV força você a adicionar uma segunda dependência e manter dois caminhos de integração separados. Uma biblioteca de planilha unificada elimina essa divisão desde o início.

Comparação de recursos entre IronXL e bibliotecas somente CSV
Capacidade IronXL CsvHelper Analisador de Campo de Texto
Ler arquivos CSV Sim Sim Sim
Escrever arquivos CSV Sim Sim Não
Ler/escrever XLSX Sim Não Não
Avaliação de fórmula Sim Não Não
Estilização e formatação de células Sim Não Não
Arquivos protegidos por senha Sim Não Não
Dependência de Office necessária Não Não Não
Multiplataforma (.NET 10) Sim Sim Limitado

Quais recursos adicionais de planilha uma biblioteca unificada fornece?

Além da conversão de formatos, uma biblioteca que lida tanto com CSV quanto com Excel oferece operações de planilha que se tornam úteis à medida que os projetos crescem. Com IronXL especificamente, você obtém:

  • Avaliação de fórmulas -- você pode escrever fórmulas como =SUM(B2:B10) em células e ler de volta o resultado calculado sem a presença do Excel.
  • Estilização de célula e intervalo -- aplique pesos de fonte, cores de fundo, formatos de número e bordas através da API de estilo IronXL.
  • Proteção por senha -- abra livros de trabalho criptografados com WorkBook.Load("secure.xlsx", "password") e salve novos arquivos com criptografia.
  • Intervalos nomeados -- defina e faça referência a regiões nomeadas assim como você faria no Excel, o que simplifica a autoria de fórmulas e a validação de dados.
  • Suporte a arquivos grandes -- IronXL processa dados em código gerenciado sem carregar o arquivo inteiro em memória de uma vez, o que mantém o uso de memória previsível mesmo para arquivos com dezenas de milhares de linhas.

A página de recursos do IronXL tem uma lista completa de operações suportadas.

Como o IronXL lida com implantações multiplataforma?

Um desafio recorrente com bibliotecas de planilhas é o comportamento específico da plataforma. Bibliotecas que dependem de interop COM só funcionam no Windows, e bibliotecas que saem para o Office requerem uma instalação do Office. IronXL é totalmente gerenciado por código, sem dependências nativas, então o mesmo binário roda em contêineres Linux, máquinas de desenvolvimento macOS e servidores Windows sem alterações. Isso torna fácil implantar no Azure, AWS, Docker, ou em qualquer alvo .NET 10.

Para desenvolvedores construindo pipelines de dados com ferramentas como Dapper ou Entity Framework Core, o IronXL se adapta naturalmente como a camada de serialização -- leia a entrada CSV, processe com seu ORM, exporte resultados como XLSX ou CSV. A página de licenciamento do IronXL explica os níveis de licença disponíveis para uso comercial.

Como Usar uma Biblioteca CSV em C# para Ler e Escrever Arquivos: Figura 5 - Tabela de comparação de IronXL vs. bibliotecas apenas para csv

Quais são os seus próximos passos?

IronXL oferece a você uma API única e consistente para ler, escrever e converter arquivos CSV e Excel em qualquer aplicação .NET 10. Os principais benefícios são diretos: não há dependência do Office, suporte multiplataforma, forte tipagem para valores de célula e um caminho direto de projetos apenas CSV para funcionalidade completa de planilhas sempre que os requisitos mudarem.

Quando estiver pronto para se aprofundar mais, comece com os tópicos mais relevantes para o seu projeto atual. Se você lida principalmente com pipelines de importação de CSV, os padrões de leitura e mapeamento abordados acima lidam com a maioria dos cenários do mundo real. Se seus requisitos de saída variam -- às vezes CSV para scripts posteriores, às vezes XLSX para usuários finais -- a seção de conversão de formato mostra como atender a ambos com uma única base de código.

Para equipes que constroem sistemas de relatórios ou exportam resultados de bancos de dados, a abordagem InsertDataTable escala bem e evita a sobrecarga de desempenho da atribuição célula por célula linha por linha. Combine isso com a formatação de células para produzir relatórios que os usuários possam abrir diretamente no Excel sem reformatar.

Para avançar, siga estas etapas:

  1. Instale a biblioteca via NuGet usando Install-Package IronXL ou dotnet add package IronXL.
  2. Siga o quickstart no guia de introdução do IronXL para carregar seu primeiro arquivo CSV.
  3. Explore a conversão de formato com o tutorial de CSV para Excel quando você precisar de ambos os formatos no mesmo projeto.
  4. Revise a referência da API na referência de objetos do IronXL para operações avançadas de células, suporte a fórmulas e formatação.
  5. Inicie um teste gratuito na página de licença de teste do IronXL -- não é necessário cartão de crédito, inclui suporte técnico.

Se você estiver avaliando opções juntamente com outras ferramentas da Iron Software, a suite de produtos IronSoftware cobre geração de PDF com IronPDF, leitura de código de barras, OCR e mais -- todos compartilhando o mesmo modelo de licenciamento e canal de suporte.

Perguntas frequentes

O que é o IronXL e como ele ajuda com arquivos CSV em C#?

IronXL é uma poderosa biblioteca C# que permite aos desenvolvedores ler, escrever e converter arquivos CSV de forma integrada. Ela oferece suporte estendido para planilhas do Excel, garantindo alto desempenho e tratamento consistente de linhas, colunas e tipos de dados.

Por que eu deveria usar o IronXL em vez de bibliotecas gratuitas como o CsvHelper?

Embora o CsvHelper seja ótimo para operações básicas com arquivos CSV, o IronXL se destaca com recursos como suporte a planilhas do Excel, desempenho aprimorado e tratamento robusto de tipos de dados, tornando-o adequado para fluxos de trabalho mais complexos com planilhas.

O IronXL é compatível com os formatos CSV e Excel?

Sim, o IronXL foi projetado para lidar com os formatos CSV e Excel de forma eficiente, permitindo que você converta entre os dois com facilidade.

O IronXL suporta processamento de dados de alto desempenho?

O IronXL foi desenvolvido para alto desempenho, garantindo processos de importação e exportação de dados fluidos, com velocidade e eficiência ideais.

É possível integrar o IronXL com fluxos de trabalho de planilhas existentes?

Sem dúvida, o IronXL se integra perfeitamente aos fluxos de trabalho de planilhas existentes, aprimorando a capacidade de gerenciar dados em formatos CSV e Excel.

O que torna o IronXL adequado para operações complexas com arquivos CSV?

O IronXL oferece recursos robustos, como o tratamento consistente de linhas, colunas e tipos de dados, tornando-o ideal para operações complexas com arquivos CSV que exigem mais do que o processamento básico.

Posso usar o IronXL para converter arquivos CSV em Excel?

Sim, uma das principais funcionalidades do IronXL é a capacidade de converter arquivos CSV para o formato Excel e vice-versa, simplificando os processos de gerenciamento de dados.

Como o IronXL garante o processamento confiável de arquivos CSV?

O IronXL garante o manuseio confiável de arquivos CSV por meio de seus recursos avançados, que incluem suporte para tipos de dados complexos e integração com as funcionalidades do Excel.

Quais são os benefícios de usar o IronXL para importação/exportação de dados?

O IronXL oferece processos de importação/exportação de dados simplificados, economizando tempo e esforço dos desenvolvedores, ao mesmo tempo que garante a integridade e a precisão dos dados em todos os formatos.

O IronXL é fácil de usar para desenvolvedores iniciantes em operações com CSV em C#?

Sim, o IronXL foi projetado com recursos fáceis de usar e exemplos de código simples, tornando-o acessível e fácil de usar para desenvolvedores iniciantes em operações com CSV em C#.

Jordi Bardia
Engenheiro de Software
Jordi é extremamente proficiente em Python, C# e C++, e quando não está utilizando suas habilidades na Iron Software, dedica-se à programação de jogos. Compartilhando as responsabilidades por testes, desenvolvimento e pesquisa de produtos, Jordi agrega imenso valor à melhoria contínua dos produtos. Essa experiência diversificada o mantém ...
Leia mais

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me