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

Como ler arquivos CSV com vírgulas em C#

Por que desenvolvedores .NET precisam de uma solução CSV melhor?

Arquivos CSV impulsionam a troca de dados em incontáveis aplicações .NET. Desde relatórios financeiros até sistemas de inventário, você tem a liberdade de criar arquivos CSV programaticamente em apenas algumas linhas de código. Enquanto bibliotecas como CsvHelper cobrem operações básicas de CSV, desenvolvedores modernos enfrentam cenários complexos: converter livros de Excel com fórmulas, preservar tipos de dados durante a exportação e lidar com fluxos de trabalho de planilhas de nível empresarial. IronXL aborda esses desafios combinando robustez na escrita de CSV com funcionalidade abrangente de Excel em uma biblioteca única, sem dependências, que segue os padrões RFC 4180.

Isso a torna ideal para desenvolvedores que estão construindo um escritor CSV personalizado for .NET ou um analisador CSV for .NET que suporta múltiplas colunas, funcionalidade específica de linha que afeta apenas a linha sendo processada, e separadores inferidos automaticamente.

Começando com IronXL

Instalar o IronXL leva segundos através do Gerenciador de Pacotes NuGet:

Install-Package IronXl.Excel

Uma vez instalado, adicione o namespace IronXL para começar a escrever arquivos CSV e trabalhar com valores separados de forma eficiente:

using IronXL;
class Program
{
    static void Main(string[] args)
    {
        // Create a new workbook and worksheet
        WorkBook workBook = WorkBook.Create();
        WorkSheet workSheet = workBook.CreateWorkSheet("data");
        // Add headers
        workSheet["A1"].Value = "Product";
        workSheet["B1"].Value = "Quantity";
        workSheet["C1"].Value = "Price";
        // Add data
        workSheet["A2"].Value = "Widget";
        workSheet["B2"].Value = 100;
        workSheet["C2"].Value = 19.99;
        // Save as CSV with comma delimiter
        workBook.SaveAsCsv("inventory.csv", ",");
    }
}
using IronXL;
class Program
{
    static void Main(string[] args)
    {
        // Create a new workbook and worksheet
        WorkBook workBook = WorkBook.Create();
        WorkSheet workSheet = workBook.CreateWorkSheet("data");
        // Add headers
        workSheet["A1"].Value = "Product";
        workSheet["B1"].Value = "Quantity";
        workSheet["C1"].Value = "Price";
        // Add data
        workSheet["A2"].Value = "Widget";
        workSheet["B2"].Value = 100;
        workSheet["C2"].Value = 19.99;
        // Save as CSV with comma delimiter
        workBook.SaveAsCsv("inventory.csv", ",");
    }
}
$vbLabelText   $csharpLabel

Este simples programa de teste de console mostra como escrever o conteúdo CSV diretamente do seu código C#, criando um objeto Workbook que contém nossos dados. O método SaveAsCsv usa um separador padrão (vírgula), mas permite que você defina opcionalmente um sep para diferentes localidades; isso é especialmente útil ao lidar com um separador decimal ou caractere alternativo de separação de coluna. Internamente, sep lida com a alocação de matriz para o buffer de saída. O parâmetro sep mencionado anteriormente permite que você defina esse caractere.

Também demonstramos como fornecer um ponto de entrada estático e mostramos como fazer uma gestão eficiente de memória usando um pool de recursos estaticamente definido, permitindo alto desempenho em várias linhas.

Técnicas avançadas de criação de arquivos CSV

Como Ler Arquivos CSV com Vírgulas em C#: Figura 1 - Exemplo de saída CSV com IronXL

Técnicas avançadas de criação de arquivos CSV

Convertendo livros de Excel para CSV

IronXL se destaca ao converter arquivos de Excel existentes para CSV, avaliando fórmulas e preservando a integridade dos dados. Isso é essencial ao escrever arquivos CSV que contêm tanto linhas de cabeçalho quanto dados gerados dinamicamente.

// Load an Excel file with formulas and formatting
WorkBook workBook = WorkBook.Load("financial_report.xlsx");
// IronXL evaluates formulas before export
workBook.EvaluateAll();
// Export to CSV - each worksheet creates a separate CSV file
workBook.SaveAsCsv("report.csv", ",");
// Creates: report.Sheet1.csv, report.Sheet2.csv, etc.
// Load an Excel file with formulas and formatting
WorkBook workBook = WorkBook.Load("financial_report.xlsx");
// IronXL evaluates formulas before export
workBook.EvaluateAll();
// Export to CSV - each worksheet creates a separate CSV file
workBook.SaveAsCsv("report.csv", ",");
// Creates: report.Sheet1.csv, report.Sheet2.csv, etc.
$vbLabelText   $csharpLabel

Ao converter livros de múltiplas planilhas, IronXL gera automaticamente arquivos CSV individuais para cada planilha. Os cálculos de fórmulas são executados antes da exportação, garantindo dados precisos na saída CSV final. Mas este não é o único recurso. O separador automaticamente inferido por padrão assegura compatibilidade entre regiões, e múltiplas linhas ou múltiplas colunas são tratadas sem problemas.

Você também pode usar um sep anulável para ambientes dinâmicos onde os separadores padrão variam.

Saída

Primeiro, aqui você pode ver os arquivos CSV gerados a partir do nosso arquivo Excel de várias planilhas:

Como Ler Arquivos CSV com Vírgulas em C#: Figura 2 - Arquivos CSV

E este é um exemplo de comparação de uma das planilhas do Excel vs. o arquivo CSV correspondente:

Como Ler Arquivos CSV com Vírgulas em C#: Figura 3 - Exemplo de saída

Exportando DataTable para CSV

Para aplicações orientadas a banco de dados, IronXL simplifica exportações de DataTable. Estamos definindo o var para Datarow em vez de um var ref típico v para ser mais claro.

// Assume dataTable contains query results
DataTable dataTable = GetSalesData();
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("sales");
// Import DataTable directly
var row = 1;
foreach (var dataRow in dataTable.Rows)
{
    for (var col = 0; col < dataTable.Columns.Count; col++)
    {
        workSheet.SetCellValue(row, col, dataRow[col].ToString());
    }
    row++;
}
// Export with custom delimiter if needed
workBook.SaveAsCsv("sales_data.csv", ";");
// Assume dataTable contains query results
DataTable dataTable = GetSalesData();
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("sales");
// Import DataTable directly
var row = 1;
foreach (var dataRow in dataTable.Rows)
{
    for (var col = 0; col < dataTable.Columns.Count; col++)
    {
        workSheet.SetCellValue(row, col, dataRow[col].ToString());
    }
    row++;
}
// Export with custom delimiter if needed
workBook.SaveAsCsv("sales_data.csv", ";");
$vbLabelText   $csharpLabel

Ao importar, cada conjunto de dados horizontal da coleção dataTable.Rows torna-se uma nova linha na planilha. IronXL preserva tipos de dados durante a conversão, o que significa que números permanecem numéricos, datas mantêm o formato e textos lidam com caracteres especiais corretamente sem configuração adicional.

Saída

Aqui, você pode ver nossa fonte de dados simulada ao lado do arquivo CSV de saída:

Como Ler Arquivos CSV com Vírgulas em C#: Figura 4 - Exportando DataTable para saída CSV

IronXL vs CsvHelper: Comparação Lado a Lado para Escrita de Arquivos CSV

Considere este cenário de exportação de dados de funcionários, demonstrando fluxos de trabalho de análise e escrita de CSV.

Implementação CsvHelper:

using (var writer = new StreamWriter("employees.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
    csv.WriteRecords(employees);
}
using (var writer = new StreamWriter("employees.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
    csv.WriteRecords(employees);
}
$vbLabelText   $csharpLabel

Implementação IronXL:

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("employees");
// Add data with automatic type handling
int rowIndex = 1;
foreach (var emp in employees)
{
    workSheet[$"A{rowIndex}"].Value = emp.Name;
    workSheet[$"B{rowIndex}"].Value = emp.Salary;
    workSheet[$"C{rowIndex}"].Value = emp.StartDate;
    rowIndex++;
}
workBook.SaveAsCsv("employees.csv", ",");
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("employees");
// Add data with automatic type handling
int rowIndex = 1;
foreach (var emp in employees)
{
    workSheet[$"A{rowIndex}"].Value = emp.Name;
    workSheet[$"B{rowIndex}"].Value = emp.Salary;
    workSheet[$"C{rowIndex}"].Value = emp.StartDate;
    rowIndex++;
}
workBook.SaveAsCsv("employees.csv", ",");
$vbLabelText   $csharpLabel

Recurso

CsvHelper

IronXL

Escrita Básica de CSV

Conversão de Excel para CSV

Avaliação de Fórmulas

Manipulação de Múltiplas Planilhas

Preservação de Tipos de Dados

Manual

Automático

Suporte ao Formato Excel

XLSX, XLS, XLSM

Nenhum MS Office Necessário

Enquanto CsvHelper lida eficientemente com operações de colunas de escrita simples, IronXL oferece a flexibilidade de trabalhar com múltiplas linhas, strings interpoladas e cenários de geração de código dinâmico e até mesmo permitir otimizações de baixo nível com construtos como ref struct link.

Os desenvolvedores podem enumerar linhas que correspondem a critérios específicos, gerenciar separadores padrão inferidos automaticamente, ou até mesmo testar com programas simples de console que expõem funcionalidade específica de linha e apenas a chave de cada entrada para depuração.

Recursos Empresariais e Melhores Práticas

O método SaveAsCsv do IronXL inclui capacidades de nível empresarial:

  • Delimitadores personalizados: Suporte para vírgula, ponto e vírgula, tabulação ou qualquer caractere (o separador padrão pode ser substituído pelo separador sep)
  • Opções de codificação: UTF-8, UTF-16 e codificações personalizadas
  • Avaliação de fórmulas: Calcula fórmulas do Excel antes da exportação
  • Suporte multiplataforma: Funciona no Windows, Linux e macOS

Os desenvolvedores também podem aplicar métodos de extensão para acessar múltiplas colunas para processamento eficiente ou escrever linhas CSV que se estendem por várias linhas quando o encapsulamento de texto é necessário.

Problemas Comuns e Soluções

Ao trabalhar com exportações de CSV, os desenvolvedores frequentemente encontram esses desafios:

  • Caracteres especiais nos dados: O IronXL automaticamente escapa aspas, vírgulas e quebras de linha
  • Manipulação de arquivos grandes: Use intervalos de planilha para processar dados em partes,
  • Problemas de codificação: Especifique a codificação UTF-8 para caracteres internacionais
  • Tipos de dados ausentes: IronXL preserva formatos numéricos e de data por padrão

Para solução de problemas detalhada, visite a documentação CSV do IronXL, referência API e recursos de suporte.

Comece a Construir Seu Escritor de CSV Hoje

IronXL transforma a escrita de CSV de um desafio de análise em uma operação direta. Combinando funcionalidade CSV com suporte a planilhas Excel, avaliação de fórmulas e manipulação automática de tipos, elimina a complexidade de gerenciar múltiplas bibliotecas ou conversões de dados manuais.

Pronto para simplificar seus fluxos de trabalho CSV? Inicie seu teste gratuito a partir de $liteLicense.

Perguntas frequentes

Por que os desenvolvedores .NET precisam de uma solução CSV melhor?

Os desenvolvedores .NET frequentemente encontram desafios ao lidar com arquivos CSV que contêm vírgulas ou caracteres especiais. O IronXL oferece funcionalidades avançadas para lidar com essas complexidades sem esforço, melhorando a precisão e a eficiência da análise de dados.

Como o IronXL lida com campos entre aspas em arquivos CSV?

O IronXL foi projetado para analisar com precisão arquivos CSV com campos entre aspas, garantindo que os dados que contêm vírgulas ou outros caracteres especiais sejam interpretados e processados corretamente, sem erros.

Quais são os benefícios de usar o IronXL para analisar arquivos CSV em C#?

O IronXL oferece recursos robustos para análise de arquivos CSV, incluindo suporte a caracteres especiais, campos entre aspas e grandes conjuntos de dados. Isso aumenta a confiabilidade e reduz o tempo que os desenvolvedores gastam depurando problemas relacionados a CSV.

O IronXL consegue lidar com arquivos CSV que contêm caracteres especiais?

Sim, o IronXL consegue lidar com arquivos CSV contendo diversos caracteres especiais, garantindo que todos os dados sejam lidos e processados com precisão, sem causar erros de análise ou perda de dados.

O que diferencia o IronXL de outras bibliotecas de análise de CSV?

IronXL se destaca por sua capacidade de lidar com cenários complexos de CSV, como vírgulas embutidas e campos entre aspas, com facilidade. Sua API amigável e funcionalidade abrangente o tornam a escolha preferida para desenvolvedores que trabalham com dados CSV em C#.

É possível processar arquivos CSV grandes usando o IronXL?

O IronXL é otimizado para desempenho e pode processar arquivos CSV grandes de forma eficiente, tornando-o adequado para aplicações que lidam com grandes conjuntos de dados.

Como o IronXL melhora a confiabilidade do processamento de dados CSV?

O IronXL aumenta a confiabilidade ao lidar com precisão com arquivos CSV que contêm vírgulas e caracteres especiais, reduzindo a probabilidade de erros durante a análise dos dados e garantindo sua integridade.

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