Como importar e exportar como um DataSet em C# | IronXL

Como Importar e Exportar DataTable em C

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

O IronXL converte entre workbooks Excel e DataSets com chamadas de método único - use LoadWorkSheetsFromDataSet() para importar DataSets em workbooks e ToDataSet() para exportar workbooks como DataSets com mapeamento automático de folha para tabela.

Um DataSet é uma representação de dados em memória contendo várias tabelas relacionadas, relações e restrições. Usado para trabalhar com dados de bancos de dados, XML e outras fontes. Ao trabalhar com arquivos Excel em C#, DataSet fornece uma estrutura .NET familiar que se integra com aplicativos orientados a dados.

Um DataTable representa uma tabela única com linhas e colunas dentro de um DataSet. IronXL mapeia automaticamente cada planilha Excel para um correspondente DataTable, preservando os cabeçalhos de coluna e os tipos de dados durante a conversão.

Início Rápido: Exportar Workbook como System.Data.DataSet Instantaneamente

Converter um workbook em um DataSet leva uma chamada de método. Este exemplo exporta todo o seu workbook - cada folha como um DataTable - usando ToDataSet com reconhecimento opcional de cabeçalho de primeira linha.

  1. Instale IronXL com o Gerenciador de Pacotes NuGet

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

    DataSet ds = WorkBook.Create().ToDataSet(useFirstRowAsColumnNames: true);
  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

Como Carregar um DataSet em um Workbook?

Use o método estático LoadWorkSheetsFromDataSet para importar um DataSet em um workbook. Este método requer ambos objetos DataSet e Workbook. Também aceita configurações opcionais via DataSet. Crie o workbook primeiro usando o método Create. Passe o objeto DataSet e o objeto workbook para o método.

:path=/static-assets/excel/content-code-examples/how-to/export-dataset-datatable-load.cs
using IronXL;
using System.Data;

// Create dataset
DataSet dataSet = new DataSet();

// Create workbook
WorkBook workBook = WorkBook.Create();

// Load DataSet to workBook
WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook);
Imports IronXL
Imports System.Data

' Create dataset
Private dataSet As New DataSet()

' Create workbook
Private workBook As WorkBook = WorkBook.Create()

' Load DataSet to workBook
WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook)
$vbLabelText   $csharpLabel

Cada DataTable dentro do DataSet se torna uma planilha separada. O nome da tabela se torna o nome da planilha, mantendo a organização dos dados. Para múltiplas fontes de dados, combine isso com criação de novas planilhas ou gerenciamento de planilhas existentes.

Aqui está um exemplo abrangente carregando um DataSet com múltiplas tabelas:

:path=/static-assets/excel/content-code-examples/how-to/export-dataset-datatable-3.cs
using IronXL;
using System.Data;

// Create a DataSet with multiple tables
DataSet salesData = new DataSet("CompanySales");

// Create and populate a products table
DataTable productsTable = new DataTable("Products");
productsTable.Columns.Add("ProductID", typeof(int));
productsTable.Columns.Add("ProductName", typeof(string));
productsTable.Columns.Add("Price", typeof(decimal));

// Add sample data
productsTable.Rows.Add(1, "Laptop", 999.99m);
productsTable.Rows.Add(2, "Mouse", 19.99m);
productsTable.Rows.Add(3, "Keyboard", 49.99m);

// Create and populate a sales table
DataTable salesTable = new DataTable("Sales");
salesTable.Columns.Add("SaleID", typeof(int));
salesTable.Columns.Add("ProductID", typeof(int));
salesTable.Columns.Add("Quantity", typeof(int));
salesTable.Columns.Add("Date", typeof(DateTime));

// Add sample sales data
salesTable.Rows.Add(1, 1, 5, DateTime.Now);
salesTable.Rows.Add(2, 2, 25, DateTime.Now.AddDays(-1));
salesTable.Rows.Add(3, 3, 10, DateTime.Now.AddDays(-2));

// Add tables to DataSet
salesData.Tables.Add(productsTable);
salesData.Tables.Add(salesTable);

// Create workbook and load DataSet
WorkBook workBook = WorkBook.Create();
WorkBook.LoadWorkSheetsFromDataSet(salesData, workBook);

// Save the workbook with all imported data
workBook.SaveAs("SalesReport.xlsx");
Imports IronXL
Imports System.Data

' Create a DataSet with multiple tables
Dim salesData As New DataSet("CompanySales")

' Create and populate a products table
Dim productsTable As New DataTable("Products")
productsTable.Columns.Add("ProductID", GetType(Integer))
productsTable.Columns.Add("ProductName", GetType(String))
productsTable.Columns.Add("Price", GetType(Decimal))

' Add sample data
productsTable.Rows.Add(1, "Laptop", 999.99D)
productsTable.Rows.Add(2, "Mouse", 19.99D)
productsTable.Rows.Add(3, "Keyboard", 49.99D)

' Create and populate a sales table
Dim salesTable As New DataTable("Sales")
salesTable.Columns.Add("SaleID", GetType(Integer))
salesTable.Columns.Add("ProductID", GetType(Integer))
salesTable.Columns.Add("Quantity", GetType(Integer))
salesTable.Columns.Add("Date", GetType(DateTime))

' Add sample sales data
salesTable.Rows.Add(1, 1, 5, DateTime.Now)
salesTable.Rows.Add(2, 2, 25, DateTime.Now.AddDays(-1))
salesTable.Rows.Add(3, 3, 10, DateTime.Now.AddDays(-2))

' Add tables to DataSet
salesData.Tables.Add(productsTable)
salesData.Tables.Add(salesTable)

' Create workbook and load DataSet
Dim workBook As WorkBook = WorkBook.Create()
WorkBook.LoadWorkSheetsFromDataSet(salesData, workBook)

' Save the workbook with all imported data
workBook.SaveAs("SalesReport.xlsx")
$vbLabelText   $csharpLabel

Esta abordagem funciona bem ao exportar dados de bancos de dados SQL ou consolidar dados de múltiplas fontes em formato Excel.

Visite Como Carregar Planilhas Existentes para saber mais sobre a importação de planilhas de vários formatos de arquivo.


Como Exportar um Workbook como um DataSet?

O método ToDataSet converte o workbook em um System.Data.DataSet, onde cada planilha se torna um System.Data.DataTable. Chame este método no workbook Excel para convertê-lo em um objeto DataSet. O parâmetro useFirstRowAsColumnNames determina se deve usar a primeira linha como nomes de coluna.

:path=/static-assets/excel-content-code-examples/how-to/export-dataset-datatable-export.cs
// ESTE TRECHO DE CÓDIGO NÃO ESTÁ DISPONÍVEL!
' ESTE TRECHO DE CÓDIGO NÃO ESTÁ DISPONÍVEL!
$vbLabelText   $csharpLabel

IronXL lida automaticamente com a conversão de tipos de dados e mantém a estrutura das planilhas ao exportar para DataSets. Isso ajuda ao integrar dados do Excel com bancos de dados SQL ou usar dados em outros aplicativos .NET.

Exemplo avançado demonstrando exportação de pasta de trabalho e processamento de DataSet:

:path=/static-assets/excel/content-code-examples/how-to/export-dataset-datatable-5.cs
using IronXL;
using System;
using System.Data;

// Load an existing Excel file
WorkBook workBook = WorkBook.Load("FinancialData.xlsx");

// Export to DataSet with column headers from first row
DataSet financialDataSet = workBook.ToDataSet(useFirstRowAsColumnNames: true);

// Process each DataTable in the DataSet
foreach (DataTable table in financialDataSet.Tables)
{
    Console.WriteLine($"Processing table: {table.TableName}");
    Console.WriteLine($"Columns: {table.Columns.Count}, Rows: {table.Rows.Count}");
    
    // Iterate through columns
    foreach (DataColumn column in table.Columns)
    {
        Console.WriteLine($"  Column: {column.ColumnName} ({column.DataType})");
    }
    
    // Process first 5 rows as example
    int rowCount = 0;
    foreach (DataRow row in table.Rows)
    {
        if (rowCount++ >= 5) break;
        
        // Access data by column name
        foreach (DataColumn col in table.Columns)
        {
            Console.WriteLine($"    {col.ColumnName}: {row[col]}");
        }
    }
}

// You can also export specific worksheets as DataTables
WorkSheet specificSheet = workBook.GetWorkSheet("Q1Sales");
DataTable q1Data = specificSheet.ToDataTable(useFirstRowAsColumnNames: true);

// Use the DataTable with other .NET components
// For example, bind to a DataGridView or save to database
Imports IronXL
Imports System
Imports System.Data

' Load an existing Excel file
Dim workBook As WorkBook = WorkBook.Load("FinancialData.xlsx")

' Export to DataSet with column headers from first row
Dim financialDataSet As DataSet = workBook.ToDataSet(useFirstRowAsColumnNames:=True)

' Process each DataTable in the DataSet
For Each table As DataTable In financialDataSet.Tables
    Console.WriteLine($"Processing table: {table.TableName}")
    Console.WriteLine($"Columns: {table.Columns.Count}, Rows: {table.Rows.Count}")
    
    ' Iterate through columns
    For Each column As DataColumn In table.Columns
        Console.WriteLine($"  Column: {column.ColumnName} ({column.DataType})")
    Next
    
    ' Process first 5 rows as example
    Dim rowCount As Integer = 0
    For Each row As DataRow In table.Rows
        If rowCount >= 5 Then Exit For
        rowCount += 1
        
        ' Access data by column name
        For Each col As DataColumn In table.Columns
            Console.WriteLine($"    {col.ColumnName}: {row(col)}")
        Next
    Next
Next

' You can also export specific worksheets as DataTables
Dim specificSheet As WorkSheet = workBook.GetWorkSheet("Q1Sales")
Dim q1Data As DataTable = specificSheet.ToDataTable(useFirstRowAsColumnNames:=True)

' Use the DataTable with other .NET components
' For example, bind to a DataGridView or save to database
$vbLabelText   $csharpLabel

O DataSet exportado mantém relações e restrições definidas no Excel, perfeito para trabalhar com estruturas de dados complexas do Excel sem dependências do Excel Interop.

Recursos Adicionais de DataSet/DataTable

IronXL fornece recursos avançados ao trabalhar com DataSet e DataTable:

Lidando com Tipos de Dados

IronXL mapeia inteligentemente tipos de dados durante a conversão de Excel-DataSet. Células numéricas se tornam tipos numéricos apropriados (Int32, Double, Decimal), células de data se tornam objetos DateTime e células de texto se tornam Strings. Personalize isso configurando formatos de dados de célula antes da conversão.

Otimização de desempenho

IronXL otimiza o uso de memória e a velocidade de processamento para grandes conjuntos de dados. A biblioteca faz streaming de dados de forma eficiente em vez de carregar tudo na memória. Adequado para aplicações empresariais que processam grandes volumes de dados.

Integração com outras funcionalidades

A funcionalidade de DataSet/DataTable integra-se com outros recursos do IronXL:

  • Aplique fórmulas e cálculos antes de exportar para DataSet
  • Use formatação condicional para destacar dados antes da conversão
  • Combine com criação de gráficos para relatórios visuais
  • Suporte à serialização personalizada usando int
  • Inclua regras de validação de dados via decimal
  • Manipule valores ausentes com double
  • Gerencie metadados de planilha através de DateTime
  • Preserve os tipos de formatação de célula usando string

Visite Como Salvar ou Exportar Planilhas para saber sobre exportação de planilhas para vários formatos de arquivo.

Perguntas frequentes

Como faço para converter uma planilha do Excel em um DataSet em C#?

Com o IronXL, você pode converter uma planilha do Excel em um DataSet usando o método ToDataSet(). Basta chamar WorkBook.ToDataSet(useFirstRowAsColumnNames: true) para exportar toda a sua planilha, onde cada aba se torna um DataTable no DataSet resultante.

Posso importar um DataSet para uma planilha do Excel programaticamente?

Sim, o IronXL fornece o método LoadWorkSheetsFromDataSet() para importar um DataSet para uma pasta de trabalho. Crie uma pasta de trabalho usando WorkBook.Create(), e então passe o DataSet e a pasta de trabalho para este método estático. Cada DataTable se torna uma planilha separada.

O que acontece com os nomes dos DataTables ao importá-los para o Excel?

Ao usar o método LoadWorkSheetsFromDataSet() do IronXL, cada nome de DataTable se torna automaticamente o nome da planilha no Excel, mantendo a organização dos seus dados e facilitando a identificação de diferentes fontes de dados.

A biblioteca preserva os cabeçalhos das colunas durante a conversão do DataSet?

Sim, o IronXL preserva os cabeçalhos de coluna e os tipos de dados durante a conversão entre Excel e DataSets. Ao usar ToDataSet() com useFirstRowAsColumnNames definido como verdadeiro, a primeira linha de cada planilha é reconhecida como cabeçalho de coluna.

Como lidar com várias tabelas ao converter entre Excel e DataSets?

O IronXL mapeia automaticamente cada planilha do Excel para uma DataTable correspondente ao converter para DataSet, e vice-versa. Ao importar um DataSet com várias tabelas, cada DataTable cria uma planilha separada na pasta de trabalho.

Qual é o código mínimo necessário para exportar um arquivo Excel para um DataSet?

O código mínimo para exportar uma planilha do Excel para um DataSet usando o IronXL consiste em apenas uma linha: `DataSet ds = WorkBook.Create().ToDataSet(useFirstRowAsColumnNames: true);` Isso converte toda a sua planilha com mapeamento automático de planilhas para tabelas.

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.