
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 em 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:
Após a instalação do pacote, adicione o namespace a qualquer arquivo onde você deseje trabalhar com dados de planilhas:
using IronXL;Imports IronXLO 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. Consulte o guia de instalação do IronXL para obter instruções passo a passo sobre as fontes do pacote e a ativação da 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 IronXL infere o formato a partir 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}");
}Imports System
' Load a CSV file into a WorkBook
Dim workBook As WorkBook = WorkBook.Load("sales_data.csv")
' Access the default worksheet
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet
' Read individual cells by Excel-style address
Dim customerName As String = workSheet("A2").StringValue
Dim orderAmount As Decimal = workSheet("B2").DecimalValue
' Iterate rows, starting at index 1 to skip the header
For i As Integer = 1 To workSheet.Rows.Count() - 1
Dim row = workSheet.Rows(i)
Console.WriteLine($"Customer: {row.Columns(0).Value}, Amount: {row.Columns(1).Value}")
NextO objeto WorkBook expõe o modelo completo da planilha. Acesse as células com notação familiar do Excel, como "A2", e propriedades de conversão embutidas -- StringValue, DecimalValue, IntValue, DateTimeValue -- lidam com coercibilidade de tipo 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 faixa como workSheet["A2:C10"] e iterar através dela 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
For Each cell In workSheet("A2:C10")
Console.WriteLine($"{cell.AddressString}: {cell.Value}")
NextPara contagens de linhas dinâmicas, a coleção workSheet.Rows reflete automaticamente os dados carregados, para que você não precise codificar manualmente as contagens de linhas. 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
));
}Imports System
Imports System.Collections.Generic
Public Class SalesRecord
Public Property Customer As String
Public Property Amount As Decimal
Public Property OrderDate As DateTime
Public Sub New(customer As String, amount As Decimal, orderDate As DateTime)
Me.Customer = customer
Me.Amount = amount
Me.OrderDate = orderDate
End Sub
End Class
Dim workBook As WorkBook = WorkBook.Load("sales_data.csv")
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet
Dim records As New List(Of SalesRecord)()
' Start at row 1 to skip the header row (row 0)
For i As Integer = 1 To workSheet.Rows.Count() - 1
Dim row = workSheet.Rows(i)
records.Add(New SalesRecord(
Customer:=row.Columns(0).StringValue,
Amount:=row.Columns(1).DecimalValue,
OrderDate:=row.Columns(2).DateTimeValue
))
NextEssa 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 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
Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As 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.99D
workSheet("A3").Value = "Gadget B"
workSheet("B3").Value = 120
workSheet("C3").Value = 24.5D
' Export to CSV
workBook.SaveAsCsv("inventory.csv")SaveAsCsv lida com a colocação de delimitadores, a citação de campos que contêm vírgulas e a normalização de novas linhas. 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 para um DataTable. IronXL pode inserir um inteiro DataTable 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");IRON VB CONVERTER ERROR developers@ironsoftware.comO método InsertDataTable escreve os cabeçalhos das colunas do esquema DataTable e popula todas as linhas começando no endereço que você fornecer. 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 converter 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 Salvar 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
Dim csvWorkBook As WorkBook = WorkBook.Load("data.csv")
csvWorkBook.SaveAs("data.xlsx")
' Convert Excel back to CSV
Dim xlsxWorkBook As WorkBook = WorkBook.Load("report.xlsx")
xlsxWorkBook.SaveAsCsv("report.csv")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");Dim multiSheetWorkBook As WorkBook = WorkBook.Load("quarterly_report.xlsx")
' Produces: quarterly_report.Sheet1.csv, quarterly_report.Sheet2.csv, etc.
multiSheetWorkBook.SaveAsCsv("quarterly_report.csv")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.


Por que bibliotecas somente CSV não atendem a projetos reais?
Many C# developers start with CsvHelper or the Analisador de Campo de Texto from 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.
| 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 que o Excel esteja presente. - Estilo de célula e intervalo -- aplique pesos de fonte, cores de fundo, formatos de número e bordas através da API de estilo do IronXL.
- Proteção por senha -- abra planilhas criptografadas 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 facilita a implantação no Azure, AWS, Docker, ou qualquer destino .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.

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 a célula. 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:
- Instale a biblioteca via NuGet usando
Install-Package IronXLoudotnet add package IronXL. - Siga o quickstart no guia de introdução do IronXL para carregar seu primeiro arquivo CSV.
- Explore a conversão de formato com o tutorial de CSV para Excel quando você precisar de ambos os formatos no mesmo projeto.
- 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.
- 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 Iron Software, o conjunto de produtos Iron Software cobre geração de PDF com IronPDF, leitura de códigos de barras, OCR, e muito mais -- tudo compartilhando o mesmo modelo de licenciamento e canal de suporte.

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.
Artigos relacionados



