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

Importando um arquivo Excel para o DataTable com o IronXL

Importar arquivo Excel para DataTable em C# com IronXL

Não é segredo que analisar arquivos Excel manualmente raramente é o ápice do dia de um desenvolvedor. Todos nós já passamos por isso, lutando com strings de conexão OLEDB legados ou tentando mapear dados de planilhas não estruturados em algo que sua aplicação .NET realmente entenda.

O DataTable em C# é o grande igualador. Ele atua como a ponte perfeita, transformando essas linhas e colunas em uma estrutura familiar pronta para consultas LINQ, vinculação de DataGrid, ou uma rápida viagem para um banco de dados SQL.

O IronXL elimina o trabalho pesado deste processo. Em vez de configurações complexas, ele utiliza um único método intuitivo ToDataTable para lidar com a conversão. Quer você esteja construindo uma ferramenta de relatórios ou um script de migração de dados, aqui está como você pode importar dados do Excel sem esforço.

Quer acompanhar? Use o teste gratuito do IronXL para experimentar esta poderosa biblioteca você mesmo.

How Can You Import an Excel File into a DataTable in C#?

Para importar um arquivo Excel para DataTable em C#, carregue o workbook usando WorkBook.Load, acesse a planilha alvo e chame o método ToDataTable. Essa abordagem funciona com arquivos XLSX, XLS, XLSM e formatos CSV. Certifique-se de referenciar os namespaces a seguir para acessar as classes necessárias.

Instale o IronXL via Gerenciador de Pacotes NuGet com o seguinte comando no Visual Studio usando o Gerenciador de Pacotes NuGet:

Install-Package IronXl.Excel

Em seguida, use este trecho de código conciso para mover seus dados:

using IronXL;
using System;
using System.Data;
class Program
{
    static void Main(string[] args)
    {
        // Load the Excel file from the specified path
        string filePath = "sales-data.xlsx";
        WorkBook workbook = WorkBook.Load(filePath);
        // Access the first worksheet in the workbook
        WorkSheet worksheet = workbook.DefaultWorkSheet;
        // Convert worksheet to DataTable with first row as column headers
        DataTable dt = worksheet.ToDataTable(true);
        // Display the imported data
        foreach (DataRow row in dt.Rows)
        {
            Console.WriteLine(string.Join(" | ", row.ItemArray));
        }
    }
}
using IronXL;
using System;
using System.Data;
class Program
{
    static void Main(string[] args)
    {
        // Load the Excel file from the specified path
        string filePath = "sales-data.xlsx";
        WorkBook workbook = WorkBook.Load(filePath);
        // Access the first worksheet in the workbook
        WorkSheet worksheet = workbook.DefaultWorkSheet;
        // Convert worksheet to DataTable with first row as column headers
        DataTable dt = worksheet.ToDataTable(true);
        // Display the imported data
        foreach (DataRow row in dt.Rows)
        {
            Console.WriteLine(string.Join(" | ", row.ItemArray));
        }
    }
}
$vbLabelText   $csharpLabel

Saída

Importando um arquivo Excel para DataTable com IronXL: Imagem 1 - Arquivo Excel importado para um DataTable

O método WorkBook.Load lê o arquivo Excel da localização string filePath e cria um objeto workbook contendo todos os dados da planilha Excel. O parâmetro ToDataTable(true) indica que a primeira linha contém cabeçalhos de coluna, que são automaticamente usados como os nomes das colunas da Tabela de Dados.

Qual é o melhor método para ler dados de arquivo Excel em um DataTable?

Ler o conteúdo do arquivo Excel de forma eficiente requer lidar com os cenários de linhas de cabeçalho e dados brutos. O método ToDataTable do IronXL aceita um parâmetro booleano que determina se a primeira linha é tratada como nomes de coluna ou como dados. Observe que lidar com propriedades estendidas ou converter tipos de célula complexos pode exigir configuração adicional, mas o método padrão lida com a maioria dos casos de forma robusta.

using IronXL;
using System.Data;
// Load workbook from file path
string filePath = @"C:\Data\inventory.xlsx";
WorkBook workbook = WorkBook.Load(filePath);
WorkSheet worksheet = workbook.WorkSheets[0];
// First row as headers (true) or as data (false)
DataTable dataTableWithHeaders = worksheet.ToDataTable(true);
DataTable dataTableWithoutHeaders = worksheet.ToDataTable(false);
// Process each row in the DataTable
foreach (DataRow row in dataTableWithHeaders.Rows)
{
    for (int i = 0; i < dataTableWithHeaders.Columns.Count; i++)
    {
        object value = row[i];
        Console.Write($"{value}\t");
    }
    Console.WriteLine();
}
using IronXL;
using System.Data;
// Load workbook from file path
string filePath = @"C:\Data\inventory.xlsx";
WorkBook workbook = WorkBook.Load(filePath);
WorkSheet worksheet = workbook.WorkSheets[0];
// First row as headers (true) or as data (false)
DataTable dataTableWithHeaders = worksheet.ToDataTable(true);
DataTable dataTableWithoutHeaders = worksheet.ToDataTable(false);
// Process each row in the DataTable
foreach (DataRow row in dataTableWithHeaders.Rows)
{
    for (int i = 0; i < dataTableWithHeaders.Columns.Count; i++)
    {
        object value = row[i];
        Console.Write($"{value}\t");
    }
    Console.WriteLine();
}
$vbLabelText   $csharpLabel

Saída

Importando um arquivo Excel para DataTable com IronXL: Imagem 2 - Saída para importação e leitura de um arquivo Excel em um DataTable

Essa flexibilidade torna o IronXL ideal para processar arquivos de planilhas Excel, independentemente de sua estrutura. Diferente do pacote EPPlus ou métodos tradicionais que exigem novas instâncias de OleDbDataAdapter, o IronXL lida com a conversão em uma única chamada de método. A biblioteca oferece suporte a .NET Core, .NET Framework e implantação multiplataforma sem exigir a instalação do Microsoft Excel.

Como você converte várias planilhas Excel em um DataSet?

Quando seu workbook Excel contém várias planilhas, converter para um DataSet preserva cada planilha Excel como um DataTable separado dentro da coleção. Essa abordagem é essencial para aplicações de relatórios e processamento de dados de múltiplas planilhas.

using IronXL;
using System;
using System.Data;
// Load multi-sheet workbook
WorkBook workbook = WorkBook.Load("quarterly-reports.xlsx");
// Convert entire workbook to DataSet (each sheet becomes a DataTable)
DataSet dataset = workbook.ToDataSet();
// Iterate through all tables in the DataSet
foreach (DataTable table in dataset.Tables)
{
    Console.WriteLine($"Sheet: {table.TableName}");
    Console.WriteLine($"Rows: {table.Rows.Count}, Columns: {table.Columns.Count}");
    foreach (DataRow row in table.Rows)
    {
        Console.WriteLine(string.Join(", ", row.ItemArray));
    }
}
using IronXL;
using System;
using System.Data;
// Load multi-sheet workbook
WorkBook workbook = WorkBook.Load("quarterly-reports.xlsx");
// Convert entire workbook to DataSet (each sheet becomes a DataTable)
DataSet dataset = workbook.ToDataSet();
// Iterate through all tables in the DataSet
foreach (DataTable table in dataset.Tables)
{
    Console.WriteLine($"Sheet: {table.TableName}");
    Console.WriteLine($"Rows: {table.Rows.Count}, Columns: {table.Columns.Count}");
    foreach (DataRow row in table.Rows)
    {
        Console.WriteLine(string.Join(", ", row.ItemArray));
    }
}
$vbLabelText   $csharpLabel

Saída

Importando um arquivo Excel para DataTable com IronXL: Imagem 3 - Saída para importação de um arquivo Excel com várias planilhas para DataSet

O método ToDataSet cria um novo DataSet contendo objetos DataTable para cada planilha. A propriedade TableName de cada tabela reflete o nome original da planilha Excel, facilitando a referência de dados específicos durante o processamento.

Como você pode importar dados do Excel para um banco de dados?

Um fluxo de trabalho comum envolve a leitura de dados de arquivo Excel e a inserção em um sistema de banco de dados. A estrutura DataTable integra-se perfeitamente ao ADO.NET para operações de banco de dados.

using IronXL;
using System.Data;
using System.Data.SqlClient;
string filePath = @"C:\imports\customer-data.xlsx";
WorkBook workbook = WorkBook.Load(filePath);
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Convert Excel data to DataTable
DataTable dt = worksheet.ToDataTable(true);
// Validate data before database insert
if (dt == null || dt.Rows.Count == 0)
{
    Console.WriteLine("No data to import");
    return;
}
// Insert into database using SqlBulkCopy
string connectionString = "Server=.;Database=Sales;Trusted_Connection=True;";
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
    {
        bulkCopy.DestinationTableName = "Customers";
        bulkCopy.WriteToServer(dt);
    }
}
Console.WriteLine($"Imported {dt.Rows.Count} records successfully");
using IronXL;
using System.Data;
using System.Data.SqlClient;
string filePath = @"C:\imports\customer-data.xlsx";
WorkBook workbook = WorkBook.Load(filePath);
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Convert Excel data to DataTable
DataTable dt = worksheet.ToDataTable(true);
// Validate data before database insert
if (dt == null || dt.Rows.Count == 0)
{
    Console.WriteLine("No data to import");
    return;
}
// Insert into database using SqlBulkCopy
string connectionString = "Server=.;Database=Sales;Trusted_Connection=True;";
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
    {
        bulkCopy.DestinationTableName = "Customers";
        bulkCopy.WriteToServer(dt);
    }
}
Console.WriteLine($"Imported {dt.Rows.Count} records successfully");
$vbLabelText   $csharpLabel

Este código demonstra como carregar um arquivo Excel, convertê-lo em um DataTable e realizar uma inserção em massa no banco de dados. A verificação de nulidade garante a integridade dos dados antes de tentar a operação de importação.

Como você exporta um DataTable de volta para o Excel?

O IronXL oferece suporte a fluxo de dados bidirecional, permitindo que você crie arquivos Excel a partir de objetos DataTable para cenários de relatórios e exportação de dados.

using IronXL;
using System.Data;
// Create sample DataTable
DataTable dt = new DataTable("Products");
dt.Columns.Add("ProductID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Price", typeof(decimal));
dt.Rows.Add(1, "Widget", 29.99m);
dt.Rows.Add(2, "Gadget", 49.99m);
// Create new workbook and load DataTable
WorkBook workbook = WorkBook.Create();
workbook.LoadWorkSheetsFromDataSet(new DataSet { Tables = { dt } });
// Save as Excel file
workbook.SaveAs("exported-products.xlsx");
using IronXL;
using System.Data;
// Create sample DataTable
DataTable dt = new DataTable("Products");
dt.Columns.Add("ProductID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Price", typeof(decimal));
dt.Rows.Add(1, "Widget", 29.99m);
dt.Rows.Add(2, "Gadget", 49.99m);
// Create new workbook and load DataTable
WorkBook workbook = WorkBook.Create();
workbook.LoadWorkSheetsFromDataSet(new DataSet { Tables = { dt } });
// Save as Excel file
workbook.SaveAs("exported-products.xlsx");
$vbLabelText   $csharpLabel

Saída

Importando um arquivo Excel para DataTable com IronXL: Imagem 4 - DataTable exportado para Excel

O método LoadWorkSheetsFromDataSet aceita um DataSet contendo objetos DataTable e cria planilhas correspondentes. Saiba mais sobre exportar DataTable para Excel na documentação.

Conclusão

O IronXL transforma a complexidade da conversão Excel-para-DataTable em chamadas de métodos diretas. Quer esteja importando uma única planilha do Excel ou processando pastas de trabalho com várias planilhas em um DataSet completo, a biblioteca manipula arquivos XLSX, conversão de tipos de dados e carregamento baseado em fluxo de forma eficiente.

A combinação da flexibilidade do DataTable com a API intuitiva do IronXL habilita fluxos de trabalho poderosos para integração de banco de dados, sistemas de relatórios e vinculação de dados de aplicativos. Baixe o IronXL para otimizar o processamento de dados do Excel, ou compre uma licença para implantação em produção.

!{--010011000100100101000010010100100100000101010010010110010101111101000111010001010101010100010111110101001101010100010000010101001001010100010001010100010001011111010101110100100 101010100010010000101111101010000010100100111101000100010101010100001101010100010111110101010001010010010010010010010100000101001100010111110100001001001100010011110100001101001011--}

Perguntas frequentes

Como posso importar um arquivo Excel para um DataTable usando C#?

Você pode usar o IronXL para importar facilmente arquivos do Excel para um DataTable em C#. O IronXL fornece uma API simples para carregar arquivos do Excel e convertê-los em DataTables para manipulação posterior.

Quais são os benefícios de usar o IronXL para manipulação de arquivos Excel em C#?

IronXL oferece uma solução robusta para manipulação de arquivos Excel em C#, incluindo leitura, gravação e conversão de dados do Excel para diversos formatos, como DataTables. Suporta todos os principais tipos de arquivos Excel e oferece alto desempenho e facilidade de uso.

O IronXL é compatível com o .NET Core?

Sim, o IronXL é totalmente compatível com o .NET Core, permitindo o desenvolvimento e a implantação multiplataforma de aplicativos que exigem manipulação de arquivos do Excel.

Posso usar o IronXL para ler arquivos do Excel em diferentes formatos?

O IronXL suporta a leitura de arquivos Excel em vários formatos, incluindo XLSX, XLS, CSV e TSV, oferecendo flexibilidade no tratamento de diferentes tipos de dados do Excel.

O IronXL é compatível com recursos de segurança de arquivos do Excel?

Sim, o IronXL suporta arquivos Excel protegidos por senha, permitindo que você carregue e trabalhe com documentos Excel protegidos em seus aplicativos C#.

Como faço para converter um arquivo Excel em um DataTable usando o IronXL?

Com o IronXL, você pode converter um arquivo do Excel em um DataTable carregando a pasta de trabalho, selecionando a planilha e utilizando os métodos integrados para exportar os dados da planilha para um DataTable.

Que tipos de aplicações podem se beneficiar do uso do IronXL?

O IronXL é ideal para qualquer aplicação que exija manipulação de dados do Excel, como ferramentas de análise de dados, sistemas de relatórios ou qualquer software que precise importar, exportar ou modificar dados do Excel.

É possível usar o IronXL para editar arquivos do Excel depois de importá-los para um DataTable?

Sim, o IronXL permite editar e atualizar arquivos do Excel mesmo depois de importá-los para um DataTable, proporcionando uma experiência perfeita para modificar e salvar alterações.

Qual o nível de experiência em programação necessário para usar o IronXL?

O IronXL foi projetado para ser fácil de usar, com uma API intuitiva que pode ser utilizada por desenvolvedores de todos os níveis de experiência, tornando-o acessível tanto para iniciantes quanto para usuários avançados.

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