Como Converter DataTable para CSV em C# e Criar Planilha Excel
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.
-
Instale IronXL com o Gerenciador de Pacotes NuGet
PM > Install-Package IronXL.Excel -
Copie e execute este trecho de código.
IronXL.WorkBook.Create().DefaultWorkSheet.SaveAsCsv("output.csv", ","); -
Implante para testar em seu ambiente de produção.
Comece a usar IronXL em seu projeto hoje com uma avaliação gratuita
- Baixe e instale a biblioteca de conversão DataTable para CSV em C#
- Utilize a classe `DataTable` para armazenar novos dados
- Criar uma nova planilha Excel ou importar uma planilha existente
- Percorra as linhas da tabela e preencha as células da planilha com os valores recebidos
- Exporte para arquivo CSV com a função `SaveAsCsv` do C#
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.
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
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
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:
-
Criação de DataTable: Inicialize um novo
DataTablee defina seu esquema adicionando colunas. Isso se assemelha à definição de uma estrutura de tabela de banco de dados. -
População de Dados: Adicione linhas ao
DataTableusando o métodoRows.Add(). Cada linha representa um registro para exportação CSV. -
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. -
População de Células: O loop foreach itera através das linhas do
DataTablee mapeia cada valor para uma célula específica da planilha usando a sintaxe de referência de célula (por exemplo, "A1", "A2"). - 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", ",")
Qual é a aparência do resultado?
A planilha do Excel resultante exibe-se da seguinte maneira:
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
Acesso rápido à biblioteca
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 IronXLPerguntas 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.

