How to Use C# to Convert Datatable to CSV

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, preenchendo-o com linhas DataTable, e chamando o método SaveAsCsv() - sem loops complexos ou Interop necessário.

Início Rápido: Exportação de Uma Linha de DataTable para CSV

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/

or

  • No Visual Studio, selecione o menu Projeto
  • Clique em Gerenciar Pacotes NuGet
  • Pesquise 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 um WorkBook, preenchê-lo 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 fornece suporte abrangente para importar e exportar objetos DataSet e DataTable, tornando-o ideal para aplicativos orientados a banco de dados.

:path=/static-assets/excel/content-code-examples/how-to/csharp-datatable-to-csv-3.cs
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 um novo workbook especificando 'OJ' como seu proprietário, e então usa um loop foreach para inserir dados do DataTable na planilha do 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 Workbook: O método WorkBook.Create() do IronXL inicializa um novo workbook do Excel. Você também pode criar planilhas com várias abas, se necessário.

  4. População de Célula: O loop foreach itera através das linhas 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 complexidades de formatação CSV, incluindo o escape adequado de caracteres especiais e manipulação de delimitadores.

E Sobre Cenários Avançados de DataTable?

Para DataTables complexos com múltiplas colunas, estenda o código assim:

// 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, IronXL mantém 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:

:path=/static-assets/excel/content-code-examples/how-to/csharp-datatable-to-csv-6.cs
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 2,134,203 | Versão: 2026.7 recém-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.