Como Converter DataTable para CSV em C# e Criar Planilha Excel

This article was translated from English: Does it need improvement?
Translated
View the article in English

Converta um DataTable para CSV em C# usando IronXL, criando um WorkBook, populando-o com linhas do DataTable e chamando o método SaveAsCsv() — sem loops complexos ou Interop necessário.

Início Rápido: Exportar DataTable para CSV em Uma Linha

Use IronXL para converter um DataTable preenchido em um arquivo CSV com uma chamada de método — sem loops, sem Interop, sem complexidade. Você precisa apenas de um WorkBook e seu DefaultWorkSheet para exportar em segundos usando SaveAsCsv.

  1. Instale IronXL com o Gerenciador de Pacotes NuGet

    PM > Install-Package IronXL.Excel
  2. Copie e execute este trecho de código.

    IronXL.WorkBook.Create().DefaultWorkSheet.SaveAsCsv("output.csv", ",");
  3. Implante para testar em seu ambiente de produção.

    Comece a usar IronXL em seu projeto hoje com uma avaliação gratuita

    arrow pointer

Passo 1

Como Instalo o IronXL no Meu Projeto?

Você deve instalar o IronXL antes de usá-lo em suas aplicações. IronXL oferece várias opções de instalação para seus projetos. IronXL é uma biblioteca que simplifica o trabalho com arquivos Excel em C# sem exigir a instalação do Microsoft Excel ou Interop.

Qual método de instalação devo usar?

Baixe do site oficial usando o seguinte link: https://ironsoftware.com/csharp/excel/docs/

ou

  • No Visual Studio, selecione o menu Projeto
  • Clique em Gerenciar Pacotes NuGet
  • Procure por IronXL.Excel
  • Clique em Instalar

Qual Comando NuGet Devo Usar?

Install-Package IronXL.Excel

Por Que Escolher o Gerenciador de Pacotes NuGet?

NuGet é o método preferido para desenvolvedores .NET porque gerencia automaticamente dependências e mantém bibliotecas atualizadas. O pacote IronXL inclui todos os componentes necessários para converter tipos de arquivos de planilhas e trabalhar com vários formatos do Excel.

Janela de instalação do Pacote NuGet IronXL.Excel mostrando detalhes do pacote, informações de versão e botão de instalação no Gerenciador de Pacotes do Visual Studio
Figura 1 - Pacote NuGet IronXL.Excel

Tutorial de Como Fazer

Como Criar e Exportar um DataTable para CSV?

O processo de conversão de um DataTable para CSV envolve criar planilha Excel com um WorkBook, preenchê-la com dados e usar a funcionalidade de escrita CSV integrada do IronXL. Essa abordagem é mais eficiente do que construir strings CSV manualmente ou usar métodos tradicionais de streaming de arquivo.

Qual Namespace Preciso Importar?

Primeiro, importe o namespace IronXL. IronXL oferece suporte abrangente para importar e exportar objetos DataSet e DataTable, tornando-o ideal para aplicativos baseados em banco de dados.

using IronXL;
using IronXL;
Imports IronXL
$vbLabelText   $csharpLabel

Qual é o Exemplo Completo de Código?

Adicione o seguinte código:

:path=/static-assets/excel/content-code-examples/how-to/csharp-database-to-csv-datatable.cs
using IronXL;
using System;
using System.Data;

// Create a new DataTable object
DataTable table = new DataTable();

// Add a single column named "Example_DataSet" of type string
table.Columns.Add("Example_DataSet", typeof(string));

// Add rows to the DataTable
table.Rows.Add("0");
table.Rows.Add("1");
table.Rows.Add("2");
table.Rows.Add("3");
table.Rows.Add("1");
table.Rows.Add("2");
table.Rows.Add("3");

// Create a new Excel workbook and set its author metadata
WorkBook wb = WorkBook.Create(ExcelFileFormat.XLS);
wb.Metadata.Author = "OJ";

// Get the default worksheet
WorkSheet ws = wb.DefaultWorkSheet;

// Initialize rowCounter for Excel sheet rows
int rowCount = 1;

// Loop through each row in the DataTable and add the data to the Excel worksheet
foreach (DataRow row in table.Rows)
{
    // Populate worksheet cells with data from DataTable
    ws["A" + (rowCount)].Value = row[0].ToString();
    rowCount++;
}

// Save the workbook as a CSV file
wb.SaveAsCsv("Save_DataTable_CSV.csv", ";"); // Will be saved as: Save_DataTable_CSV.Sheet1.csv
Imports IronXL
Imports System
Imports System.Data

' Create a new DataTable object
Dim table As New DataTable()

' Add a single column named "Example_DataSet" of type string
table.Columns.Add("Example_DataSet", GetType(String))

' Add rows to the DataTable
table.Rows.Add("0")
table.Rows.Add("1")
table.Rows.Add("2")
table.Rows.Add("3")
table.Rows.Add("1")
table.Rows.Add("2")
table.Rows.Add("3")

' Create a new Excel workbook and set its author metadata
Dim wb As WorkBook = WorkBook.Create(ExcelFileFormat.XLS)
wb.Metadata.Author = "OJ"

' Get the default worksheet
Dim ws As WorkSheet = wb.DefaultWorkSheet

' Initialize rowCounter for Excel sheet rows
Dim rowCount As Integer = 1

' Loop through each row in the DataTable and add the data to the Excel worksheet
For Each row As DataRow In table.Rows
    ' Populate worksheet cells with data from DataTable
    ws("A" & rowCount).Value = row(0).ToString()
    rowCount += 1
Next

' Save the workbook as a CSV file
wb.SaveAsCsv("Save_DataTable_CSV.csv", ";") ' Will be saved as: Save_DataTable_CSV.Sheet1.csv
$vbLabelText   $csharpLabel

Como o Código Funciona Passo a Passo?

O código acima cria um DataTable, cria uma nova pasta de trabalho e então usa um loop foreach para inserir dados do DataTable na planilha Excel. Finalmente, o método SaveAsCsv exporta o datatable para CSV.

A divisão do processo:

  1. Criação de DataTable: Inicialize um novo DataTable e defina seu esquema adicionando colunas. Isso se assemelha à definição de uma estrutura de tabela de banco de dados.

  2. População de Dados: Adicione linhas ao DataTable usando o método Rows.Add(). Cada linha representa um registro para exportação CSV.

  3. Geração de Pasta de Trabalho: O método WorkBook.Create() do IronXL inicializa uma nova pasta de trabalho Excel. Você também pode criar planilhas com várias abas, se necessário.

  4. População de Células: O loop foreach itera através das linhas do DataTable e mapeia cada valor para uma célula específica da planilha usando a sintaxe de referência de célula (por exemplo, "A1", "A2").

  5. Exportação CSV: O método SaveAsCsv() lida com as complexidades de formatação CSV, incluindo o escape adequado de caracteres especiais e o manuseio de delimitadores.

E Sobre Cenários Avançados de DataTable?

Para DataTables complexos com várias colunas, amplie o código desta forma:

// Create a DataTable with multiple columns
DataTable advancedTable = new DataTable();
advancedTable.Columns.Add("ID", typeof(int));
advancedTable.Columns.Add("Name", typeof(string));
advancedTable.Columns.Add("Price", typeof(decimal));

--snip--
workbook.SaveAsCsv("products.csv", ",");
// Create a DataTable with multiple columns
DataTable advancedTable = new DataTable();
advancedTable.Columns.Add("ID", typeof(int));
advancedTable.Columns.Add("Name", typeof(string));
advancedTable.Columns.Add("Price", typeof(decimal));

--snip--
workbook.SaveAsCsv("products.csv", ",");
' Create a DataTable with multiple columns
Dim advancedTable As New DataTable()
advancedTable.Columns.Add("ID", GetType(Integer))
advancedTable.Columns.Add("Name", GetType(String))
advancedTable.Columns.Add("Price", GetType(Decimal))

' --snip--
workbook.SaveAsCsv("products.csv", ",")
$vbLabelText   $csharpLabel

Qual é a aparência do resultado?

A planilha do Excel resultante exibe-se da seguinte maneira:

Planilha Excel exibindo valores de DataTable exportados para formato CSV com células A1 até A7 contendo valores numéricos sequenciais
Figura 2 - Saída do DataTable para CSV

Como Lidar com Grandes DataTables?

Ao trabalhar com grandes DataTables contendo milhares de linhas, o IronXL mantém um excelente desempenho. A biblioteca lida eficientemente com conjuntos de dados substanciais. Para ambientes de produção, aplique sua chave de licença para remover marcas d'água e habilitar funcionalidade completa.

E Sobre o Tratamento de Erros?

Sempre implemente o tratamento adequado de erros ao trabalhar com operações de arquivos:

try
{
    // Your DataTable to CSV conversion code
    WorkBook wb = WorkBook.Create();
    // ... rest of the code
    wb.SaveAsCsv("output.csv", ",");
    Console.WriteLine("CSV file created successfully!");
}
catch (Exception ex)
{
    Console.WriteLine($"Error creating CSV: {ex.Message}");
}
try
{
    // Your DataTable to CSV conversion code
    WorkBook wb = WorkBook.Create();
    // ... rest of the code
    wb.SaveAsCsv("output.csv", ",");
    Console.WriteLine("CSV file created successfully!");
}
catch (Exception ex)
{
    Console.WriteLine($"Error creating CSV: {ex.Message}");
}
Imports System

Try
    ' Your DataTable to CSV conversion code
    Dim wb As WorkBook = WorkBook.Create()
    ' ... rest of the code
    wb.SaveAsCsv("output.csv", ",")
    Console.WriteLine("CSV file created successfully!")
Catch ex As Exception
    Console.WriteLine($"Error creating CSV: {ex.Message}")
End Try
$vbLabelText   $csharpLabel

Acesso rápido à biblioteca

### Documentação de Referência da API IronXL

Saiba mais e compartilhe como mesclar, desmesclar e trabalhar com células em planilhas do Excel usando a prática Documentação de Referência da API IronXL.

Documentação de Referência da API IronXL
Documentation related to Acesso rápido à biblioteca

Perguntas frequentes

Como faço para converter um DataTable em CSV em C# sem escrever loops complexos?

IronXL oferece uma solução simples de uma linha para converter DataTable em CSV. Depois de criar uma WorkBook e preenchê-la com os dados do seu DataTable, você pode usar o método SaveAsCsv() para exportar diretamente para o formato CSV sem precisar escrever loops ou usar Interop.

Quais são as opções de instalação da biblioteca de conversão de DataTable para CSV?

O IronXL pode ser instalado através do Gerenciador de Pacotes NuGet no Visual Studio, pesquisando por 'IronXL.Excel' ou usando a linha de comando do NuGet. Este é o método preferencial, pois gerencia automaticamente as dependências e mantém a biblioteca atualizada.

Preciso ter o Microsoft Excel instalado para converter um DataTable em CSV?

Não, o IronXL funciona de forma independente, sem exigir a instalação do Microsoft Excel ou do Interop. É uma biblioteca independente que simplifica o trabalho com arquivos do Excel e exportações CSV em aplicações C#.

Que namespace preciso importar para a conversão de DataTable para CSV?

Você precisa importar o namespace IronXL adicionando 'using IronXL;' no início do seu arquivo C#. Isso fornece acesso a suporte completo para importação e exportação de objetos DataSet e DataTable.

Posso especificar um delimitador personalizado ao exportar para CSV?

Sim, o método SaveAsCsv() do IronXL permite especificar um delimitador personalizado. No exemplo de código, uma vírgula ("") é usada como delimitador, mas você pode alterá-la para qualquer caractere que atenda às suas necessidades.

Curtis Chau
Redator Técnico

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 ...

Leia mais
Pronto para começar?
Nuget Downloads 1,974,422 | Versão: 2026.4 acaba de ser lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronXL.Excel
executar um exemplo Veja seus dados se transformarem em uma planilha.