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

Como importar um arquivo Excel para um GridView em ASP.NET C#

Importar dados do Excel para um GridView em ASP.NET C# é simples com IronXL. Você carrega uma planilha, converte uma folha de trabalho em um DataTable, e a vincula ao seu controle GridView - tudo sem drivers OLEDB ou strings de conexão complexas.

Tente você mesmo: Pegue uma versão de teste do IronXL para acompanhar os exemplos de código abaixo.

Como Instalar o IronXL para Integração de GridView no Excel?

Antes de escrever qualquer código, você precisa adicionar o IronXL ao seu projeto ASP.NET. O caminho mais rápido é o NuGet, seja pelo Console do Gerenciador de Pacotes do Visual Studio ou pelo CLI do .NET.

Install-Package IronXL
dotnet add package IronXL
Install-Package IronXL
dotnet add package IronXL
SHELL

Uma vez instalado, o NuGet adiciona todas as referências necessárias ao seu projeto. Não há drivers externos para instalar, nenhum fornecedor de OLEDB para registrar e nenhuma dependência do Microsoft Office no servidor. A biblioteca é fornecida como um único assembly gerenciado e funciona em Windows, Linux, macOS e ambientes de hospedagem em nuvem, incluindo o Azure App Service.

Após a instalação, adicione os seguintes namespaces a qualquer arquivo code-behind que leia ou escreva dados do Excel:

using IronXL;
using System.Data;
using System.IO;
using IronXL;
using System.Data;
using System.IO;
$vbLabelText   $csharpLabel

IronXL suporta ambos os formatos .xls (Excel 97-2003) e .xlsx (Excel 2007+), então você não precisa de tratamento separado para cada tipo de arquivo. A mesma chamada WorkBook.Load lida com qualquer formato inspecionando a assinatura do arquivo automaticamente.

Por Que Ignorar OLEDB para Vinculação de Dados de GridView?

As importações tradicionais de Excel baseadas em OLEDB requerem o Microsoft Access Database Engine (ACE ou JET), que deve ser instalado no servidor com a bitness correta (32 bits vs. 64 bits). A implantação em diferentes ambientes de servidor frequentemente falha porque o driver está ausente ou incompatível, e a Microsoft não fornece mais o driver ACE de 64 bits com o Windows por padrão.

O IronXL elimina totalmente essa dependência. Ele lê o formato bruto Open XML ou BIFF diretamente em código gerenciado. Você obtém um comportamento previsível no desenvolvimento, estágio e produção sem preocupações com a versão do driver.

Quais Plataformas .NET o IronXL Alvo?

O IronXL alvo .NET 10, .NET 8, .NET Standard 2.0 e .NET Framework 4.6.2+. Essa cobertura significa que você pode usar a mesma biblioteca, quer sua aplicação ASP.NET seja executada em Web Forms clássicos, ASP.NET MVC ou ASP.NET Core Razor Pages modernos sem qualquer mudança de código na camada de manipulação do Excel. Você pode encontrar o pacote IronXL em NuGet.org para inspecionar o histórico de versões e notas de lançamento antes da instalação.

Qual É a Maneira Mais Rápida de Carregar Dados do Excel em um GridView?

O método mais rápido combina WorkBook.Load, sheet.ToDataTable e GridView.DataBind em cerca de quatro linhas de código eficaz. Não é necessária criação manual de colunas nem iteração de linhas para cenários básicos.

using IronXL;
using System.Data;

WorkBook workBook = WorkBook.Load("data.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

// true = treat first row as column headers
DataTable dataTable = sheet.ToDataTable(true);

GridView1.DataSource = dataTable;
GridView1.DataBind();
using IronXL;
using System.Data;

WorkBook workBook = WorkBook.Load("data.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

// true = treat first row as column headers
DataTable dataTable = sheet.ToDataTable(true);

GridView1.DataSource = dataTable;
GridView1.DataBind();
$vbLabelText   $csharpLabel

A chamada ToDataTable(true) informa ao IronXL para promover a primeira linha da planilha para nomes de coluna no DataTable resultante. Quando você vincula essa tabela a um GridView com AutoGenerateColumns="true", o ASP.NET cria automaticamente uma coluna por cabeçalho do Excel.

Como o ToDataTable Lida com Tipos de Dados Mistos?

Cada valor de célula na DataTable é armazenado como um string por padrão quando você chama ToDataTable. Se sua aplicação precisar de colunas digitadas -- por exemplo, decimal para dados de preço ou DateTime para datas -- você pode ler os valores das células individualmente através do indexador WorkSheet e convertê-los para o tipo .NET apropriado antes de popular um DataTable fortemente tipado.

Para uma exibição simples em um GridView, colunas de string são suficientes porque a grade renderiza todos os valores como texto de qualquer forma.

Como Criar uma Página ASP.NET Web Forms para Importar Excel?

Uma página de importação mínima precisa de três controles: um input de upload de arquivo, um botão de envio e o GridView. Adicione a marcação ASPX a seguir dentro do seu elemento <form runat="server">:

<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="btnUpload" runat="server" Text="Upload Excel File"
    OnClick="btnUpload_Click" />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true"
    CssClass="table table-bordered" />
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="btnUpload" runat="server" Text="Upload Excel File"
    OnClick="btnUpload_Click" />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true"
    CssClass="table table-bordered" />
$vbLabelText   $csharpLabel

O atributo CssClass conecta a grade à sua folha de estilo Bootstrap se você estiver usando uma, dando-lhe linhas e bordas estilizadas sem configuração extra.

Não code-behind, trate o evento de clique do botão. O padrão abaixo salva o arquivo enviado em um caminho temporário do servidor, carrega-o com IronXL e vincula o DataTable resultante à grade:

using IronXL;
using System.Data;
using System.IO;

void btnUpload_Click(object sender, EventArgs e)
{
    if (!FileUpload1.HasFile) return;

    string uploadDir = Server.MapPath("~/Uploads/");
    Directory.CreateDirectory(uploadDir); // ensure directory exists

    string filePath = Path.Combine(uploadDir, Path.GetFileName(FileUpload1.FileName));
    FileUpload1.SaveAs(filePath);

    WorkBook workBook = WorkBook.Load(filePath);
    WorkSheet sheet = workBook.DefaultWorkSheet;
    DataTable dt = sheet.ToDataTable(true);

    GridView1.DataSource = dt;
    GridView1.DataBind();

    // Store for later export operations
    Session["CurrentData"] = dt;
}
using IronXL;
using System.Data;
using System.IO;

void btnUpload_Click(object sender, EventArgs e)
{
    if (!FileUpload1.HasFile) return;

    string uploadDir = Server.MapPath("~/Uploads/");
    Directory.CreateDirectory(uploadDir); // ensure directory exists

    string filePath = Path.Combine(uploadDir, Path.GetFileName(FileUpload1.FileName));
    FileUpload1.SaveAs(filePath);

    WorkBook workBook = WorkBook.Load(filePath);
    WorkSheet sheet = workBook.DefaultWorkSheet;
    DataTable dt = sheet.ToDataTable(true);

    GridView1.DataSource = dt;
    GridView1.DataBind();

    // Store for later export operations
    Session["CurrentData"] = dt;
}
$vbLabelText   $csharpLabel

Esta implementação segue o estilo de declarações de nível superior para a lógica dentro do manipulador de eventos, mantendo a assinatura de evento requerida do Web Forms. Observe que Directory.CreateDirectory é chamado defensivamente -- se a pasta Uploads já existir, a chamada é um no-op.

Importar Excel para GridView no ASP.NET C# com IronXL: Dados da planilha carregados em um controle GridView

Após o usuário selecionar um arquivo .xlsx e clicar no botão de upload, a grade é preenchida com o conteúdo da planilha. Os nomes das colunas vêm da primeira linha do arquivo Excel, e todas as linhas subsequentes se tornam linhas de dados na grade.

Como Você Deve Validar o Arquivo Carregado?

Para uso em produção, você deve verificar a extensão do arquivo e o tipo MIME antes de processar. IronXL lançará uma exceção em formatos de arquivo não suportados, mas é melhor rejeitar uploads ruins no nível do controlador antes de tocar no sistema de arquivos:

string ext = Path.GetExtension(FileUpload1.FileName).ToBaixoerInvariant();
string[] allowed = { ".xls", ".xlsx" };

if (!allowed.Contains(ext))
{
    lblError.Text = "Only .xls and .xlsx files are accepted.";
    return;
}
string ext = Path.GetExtension(FileUpload1.FileName).ToBaixoerInvariant();
string[] allowed = { ".xls", ".xlsx" };

if (!allowed.Contains(ext))
{
    lblError.Text = "Only .xls and .xlsx files are accepted.";
    return;
}
$vbLabelText   $csharpLabel

Você também deve impor um tamanho máximo de arquivo através dos limites de solicitação do IIS ou verificando FileUpload1.FileBytes.Length contra um limite antes de chamar SaveAs.

Como Você Acessa Planilhas e Intervalos de Células Específicos?

Quando um livro de Excel contém várias folhas, você precisa direcionar uma específica pelo nome em vez de confiar em DefaultWorkSheet. IronXL fornece um método GetWorkSheet que aceita o nome da aba da folha como uma string.

using IronXL;
using System.Data;

WorkBook workBook = WorkBook.Load("sales-report.xlsx");

// Access a named sheet
WorkSheet salesSheet = workBook.GetWorkSheet("Q4 Sales");

// Read a specific cell range
var topTen = salesSheet["A1:E11"];

// Convert the entire workbook to a DataSet (one DataTable per sheet)
DataSet allSheets = workBook.ToDataSet();

// Bind the first sheet's DataTable to the grid
GridView1.DataSource = allSheets.Tables[0];
GridView1.DataBind();
using IronXL;
using System.Data;

WorkBook workBook = WorkBook.Load("sales-report.xlsx");

// Access a named sheet
WorkSheet salesSheet = workBook.GetWorkSheet("Q4 Sales");

// Read a specific cell range
var topTen = salesSheet["A1:E11"];

// Convert the entire workbook to a DataSet (one DataTable per sheet)
DataSet allSheets = workBook.ToDataSet();

// Bind the first sheet's DataTable to the grid
GridView1.DataSource = allSheets.Tables[0];
GridView1.DataBind();
$vbLabelText   $csharpLabel

O método ToDataSet é útil quando sua aplicação precisa exibir dados de várias folhas ou deixar o usuário escolher qual folha visualizar. Cada DataTable no DataSet retornado corresponde a uma planilha do Excel, e o nome da tabela corresponde ao nome da aba da folha.

Importar Excel para GridView no ASP.NET C# com IronXL: Dados da planilha nomeada vinculados a um GridView

Como Você Filtra Linhas Antes de Vincular ao GridView?

Se você deseja apenas um subconjunto de linhas do Excel -- por exemplo, linhas onde uma coluna 'Status' iguala 'Ativo' -- leia o DataTable produzido por ToDataTable, aplique um filtro DataView, e vincule a visualização filtrada à grade:

DataTable dt = sheet.ToDataTable(true);
DataView dv = new DataView(dt)
{
    RowFilter = "Status = 'Active'"
};

GridView1.DataSource = dv;
GridView1.DataBind();
DataTable dt = sheet.ToDataTable(true);
DataView dv = new DataView(dt)
{
    RowFilter = "Status = 'Active'"
};

GridView1.DataSource = dv;
GridView1.DataBind();
$vbLabelText   $csharpLabel

DataView.RowFilter aceita a sintaxe padrão da cláusula SQL WHERE -- a mesma linguagem de expressão documentada na propriedade DataColumn.Expression no Microsoft Learn -- oferecendo classificação e filtragem sem carregar um banco de dados.

Como Você Compara Métodos de Importação para Vinculação de GridView no Excel?

Diferentes abordagens para vinculação Excel-para-GridView têm compensações distintas. A tabela abaixo resume os métodos mais comuns para que você possa escolher o certo para o seu cenário.

Comparação de métodos de importação de Excel para vinculação de GridView em ASP.NET
Método Driver Necessário Suporte a XLS Suporte a XLSX Dependência de Servidor Complexidade do código
IronXL (ToDataTable) Nenhum Sim Sim Nenhum Baixo
OLEDB / JET ACE/Motor JET Sim Parcial Driver 32/64-bit Alto
SDK Open XML Nenhum Não Sim Nenhum Alto
EPPlus Nenhum Não Sim Nenhum (licença comercial necessária para produção) Médio

IronXL cobre ambos os formatos XLS legados e XLSX modernos, não requer instalação de driver do lado do servidor e oferece a menor complexidade de código das opções listadas. Para equipes que já utilizam outros produtos da Iron Software, como IronPDF ou IronOCR, uma única licença da Iron Software cobre todo o suite.

Como Você Exporta Dados do GridView de Volta para o Excel?

Completar a viagem de ida e volta - do Excel para uma grade e de volta para o Excel - é igualmente conciso com IronXL. Este padrão é útil para botões 'baixar como Excel' que permitem que os usuários exportem o que está sendo exibido atualmente na grade.

void btnExport_Click(object sender, EventArgs e)
{
    DataTable dt = Session["CurrentData"] as DataTable;
    if (dt == null) return;

    WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet ws = workBook.CreateWorkSheet("Export");

    // Write header row
    for (int col = 0; col < dt.Columns.Count; col++)
        ws.SetCellValue(0, col, dt.Columns[col].ColumnName);

    // Write data rows
    for (int row = 0; row < dt.Rows.Count; row++)
        for (int col = 0; col < dt.Columns.Count; col++)
            ws.SetCellValue(row + 1, col, dt.Rows[row][col]?.ToString() ?? string.Empty);

    string exportDir = Server.MapPath("~/Exports/");
    Directory.CreateDirectory(exportDir);
    string exportPath = Path.Combine(exportDir, "export.xlsx");
    workBook.SaveAs(exportPath);

    Response.Clear();
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    Response.AddHeader("Content-Disposition", "attachment; filename=export.xlsx");
    Response.TransmitFile(exportPath);
    Response.End();
}
void btnExport_Click(object sender, EventArgs e)
{
    DataTable dt = Session["CurrentData"] as DataTable;
    if (dt == null) return;

    WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet ws = workBook.CreateWorkSheet("Export");

    // Write header row
    for (int col = 0; col < dt.Columns.Count; col++)
        ws.SetCellValue(0, col, dt.Columns[col].ColumnName);

    // Write data rows
    for (int row = 0; row < dt.Rows.Count; row++)
        for (int col = 0; col < dt.Columns.Count; col++)
            ws.SetCellValue(row + 1, col, dt.Rows[row][col]?.ToString() ?? string.Empty);

    string exportDir = Server.MapPath("~/Exports/");
    Directory.CreateDirectory(exportDir);
    string exportPath = Path.Combine(exportDir, "export.xlsx");
    workBook.SaveAs(exportPath);

    Response.Clear();
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    Response.AddHeader("Content-Disposition", "attachment; filename=export.xlsx");
    Response.TransmitFile(exportPath);
    Response.End();
}
$vbLabelText   $csharpLabel

A chamada Response.TransmitFile transmite o arquivo salvo para o navegador, acionando um diálogo de download. O cabeçalho Content-Disposition: attachment garante que os navegadores façam o download em vez de tentar exibir o arquivo inline.

Importar Excel para GridView no ASP.NET C# com IronXL: DataTable exportado de volta para um arquivo Excel

Quais São as Opções Comuns de Formatação do IronXL para Exportações?

Além dos dados brutos, IronXL permite que você aplique formatação de células antes de salvar. Você pode definir cabeçalhos em negrito, larguras de coluna, formatos numéricos e cores de fundo:

// Bold the header row
ws["A1:Z1"].Style.Font.Bold = true;

// Apply a currency format to column C (index 2), rows 2 onward
ws[$"C2:C{dt.Rows.Count + 1}"].FormatString = IronXl.Styles.BuiltinFormats.Accounting2;

// Auto-fit column widths (IronXL approximates based on content length)
ws.AutoSizeColumn(0);
ws.AutoSizeColumn(1);
// Bold the header row
ws["A1:Z1"].Style.Font.Bold = true;

// Apply a currency format to column C (index 2), rows 2 onward
ws[$"C2:C{dt.Rows.Count + 1}"].FormatString = IronXl.Styles.BuiltinFormats.Accounting2;

// Auto-fit column widths (IronXL approximates based on content length)
ws.AutoSizeColumn(0);
ws.AutoSizeColumn(1);
$vbLabelText   $csharpLabel

Essas chamadas de formatação usam a API de estilização de células do IronXL, que espelha o modelo de objeto do formato de arquivo do Excel sem exigir Interop.

Quais são os seus próximos passos?

Agora você tem um pipeline completo e sem driver para importar arquivos Excel em um GridView ASP.NET e exportar dados do GridView de volta para Excel usando IronXL. Aqui está o que explorar a seguir para construir sobre esta base:

  • Leia a documentação do IronXL para a referência completa da API, incluindo avaliação de fórmulas, operações de intervalos de células e criação de gráficos.
  • Explore a biblioteca de exemplos de código do IronXL para trechos prontos para execução sobre importação de CSV, livros protegidos por senha, formatação condicional e mais.
  • Tente o tutorial Excel para DataTable se você quiser uma cobertura mais profunda de mapeamento de coluna digitada e manuseio de nulos.
  • Verifique a página de licenciamento do IronXL para revisar as opções desde licenças de desenvolvimento até redistribuição OEM.
  • Revise o guia de leitura de Excel .NET da Iron Software para entender navegação em livros e planilhas em detalhes.
  • Compare o IronXL com alternativas usando a comparação de bibliotecas de Excel C# para uma análise recurso por recurso contra OLEDB, EPPlus e o SDK Open XML.

Para aplicações .NET Core e ASP.NET Core, a mesma API do IronXL funciona em Razor Pages e controladores MVC. O guia do IronXL ASP.NET Core aborda as diferenças no manuseio de uploads de arquivos e padrões de injeção de dependência.

Se você está integrando o IronXL junto com geração de documentos, o guia de integração do IronPDF mostra como exportar dados de GridView para um relatório em PDF além de Excel, útil para aplicações que precisam de ambos os formatos.

Comece com o teste gratuito do IronXL para testar todos os recursos em seu projeto antes de comprar. Nenhum cartão de crédito é necessário para a licença de teste.

Perguntas frequentes

Qual a vantagem de usar o IronXL para importar dados do Excel para o GridView em ASP.NET C#?

O uso do IronXL simplifica o processo de importação de dados do Excel para o GridView em ASP.NET C#, eliminando a necessidade de strings de conexão OLEDB complexas e instalações de drivers. Ele permite que os desenvolvedores carreguem arquivos XLS e XLSX, os convertam em DataTables e os exibam em controles GridView com código simples.

Como o IronXL lida com diferentes formatos de arquivo do Excel?

O IronXL suporta vários formatos de arquivo do Excel, incluindo XLS e XLSX, tornando-se uma ferramenta versátil para importar dados para o GridView. Ele garante compatibilidade e facilidade de uso em diferentes versões do Excel.

O IronXL consegue converter arquivos do Excel em DataTables?

Sim, o IronXL pode converter arquivos do Excel em DataTables, que podem então ser facilmente exibidas em controles GridView no ASP.NET C#. Esse recurso simplifica o processo de manipulação e visualização de dados.

O IronXL é adequado para arquivos Excel grandes?

O IronXL foi projetado para lidar com arquivos Excel grandes de forma eficiente, tornando-se uma escolha confiável para projetos que exigem a importação de grandes quantidades de dados para o GridView em ASP.NET C#.

Quais são os problemas comuns que se evitam ao usar o IronXL?

Ao usar o IronXL, os desenvolvedores podem evitar problemas comuns, como lidar com strings de conexão OLEDB, compatibilidade com drivers de servidor e processos complexos de importação de dados, reduzindo assim o tempo de depuração.

O IronXL requer alguma configuração especial no servidor?

Não, o IronXL não requer configurações especiais de servidor nem drivers adicionais, o que simplifica a implementação e reduz os custos de manutenção.

Como o IronXL melhora a produtividade do desenvolvimento?

O IronXL melhora a produtividade do desenvolvimento ao fornecer uma maneira simples e eficiente de importar dados do Excel para o GridView no ASP.NET C#, permitindo que os desenvolvedores se concentrem em outras tarefas críticas sem se perderem nas complexidades da importação de dados.

É possível integrar o IronXL com aplicações ASP.NET C# já existentes?

Sim, o IronXL pode ser facilmente integrado a aplicações ASP.NET C# existentes, permitindo a importação perfeita de dados do Excel para o GridView sem alterações significativas na arquitetura da aplicação.

Quais linguagens de programação são suportadas pelo IronXL?

O IronXL foi projetado principalmente para uso em ambientes C# e ASP.NET, oferecendo suporte robusto e integração para essas linguagens de programação.

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