Ler Arquivos Excel em ASP.NET MVC Usando C# com IronXL
O IronXL permite que desenvolvedores ASP.NET MVC leiam arquivos Excel diretamente em C# sem dependências do Microsoft Office, convertendo dados do Excel em System.Data.DataTable para fácil exibição em visualizações da web com apenas algumas linhas de código.
Início Rápido: Carregar e Converter Planilha Excel para DataTable em MVC
Este exemplo mostra como começar em segundos: carregue uma pasta de trabalho do Excel, selecione a primeira planilha e converta-a em um System.Data.DataTable usando o IronXL — sem interoperabilidade, sem complicações.
-
Instale IronXL com o Gerenciador de Pacotes NuGet
PM > Install-Package IronXL.Excel -
Copie e execute este trecho de código.
var dataTable = IronXl.WorkBook.Load("CustomerData.xlsx").DefaultWorkSheet.ToDataTable(true); -
Implante para testar em seu ambiente de produção.
Comece a usar IronXL em seu projeto hoje com uma avaliação gratuita
Fluxo de trabalho mínimo (5 etapas)
- Instalar biblioteca C# para ler arquivo Excel em ASP.NET
- Carregar e acessar a planilha alvo no arquivo Excel
- Acessar o método
ToDataTablee retorná-lo paraView - Exibir dados do Excel em uma página web usando loop
- Iterar por todos os dados e construir uma tabela HTML
Como Criar um Projeto ASP.NET para Leitura de Excel?
Por Que O Visual Studio 2022 Funciona Melhor para Isso?
Usando o Visual Studio 2022, crie um novo projeto ASP.NET. O Visual Studio 2022 oferece excelente suporte para frameworks .NET 6+, IntelliSense aprimorado para métodos IronXL e melhor desempenho ao trabalhar com arquivos Excel grandes. A integração do NuGet com a IDE torna a instalação do IronXL particularmente simples.
Qual Template de Projeto Devo Escolher?
Para ler arquivos Excel em ASP.NET, escolha o template "Aplicativo Web ASP.NET Core (Model-View-Controller)". Este template fornece uma estrutura limpa de MVC que separa o processamento de dados (leitura de Excel) da lógica de apresentação. O padrão MVC funciona perfeitamente com a conversão do IronXL, permitindo que você carregue planilhas em controladores e as exiba em visualizações de forma integrada.
Qual Versão do .NET é Recomendada?
IronXL funciona com .NET Framework 4.6.2+ e .NET Core 3.1+. Para novos projetos ASP.NET MVC, use .NET 6.0 ou superior para desempenho e segurança ideais. Essas versões oferecem melhor gerenciamento de memória ao processar grandes arquivos Excel e melhor suporte a async/await para conversão de tipos de arquivo de planilha.
Como Instalo a Biblioteca IronXL?
Quais São os Requisitos de Instalação?
Qual Método de Instalação É Mais Rápido?
Após criar o novo projeto, instale a biblioteca IronXL. Siga estes passos para instalar IronXL. Abra o Console do Gerenciador de Pacotes NuGet e execute o seguinte comando:
Install-Package IronXL.Excel
Como Posso Verificar a Instalação?
Para verificar se o IronXL está instalado corretamente, verifique as dependências do seu projeto no Solution Explorer. Você deve ver "IronXL" listado em "Dependencies > Packages". Além disso, tente adicionar using IronXL; no início do seu arquivo de controlador - o IntelliSense deverá reconhecer o namespace imediatamente. Para solucionar problemas de instalação, visite o guia de licenciamento.
Como Ler um Arquivo Excel no Meu Controlador?
Qual Código Vai na Ação de Controlador?
Abra o controlador padrão em seu projeto ASP.NET (por exemplo, HomeController.cs) e substitua o método Index pelo seguinte código:
using IronXL;
using System.Data;
public ActionResult Index()
{
// Load the Excel workbook from a specified path.
WorkBook workBook = WorkBook.Load(@"C:\Files\Customer Data.xlsx");
// Access the first worksheet from the workbook.
WorkSheet workSheet = workBook.WorkSheets.First();
// Convert the worksheet data to a DataTable object.
// The 'true' parameter uses the first row as column headers
var dataTable = workSheet.ToDataTable(true);
// Send the DataTable to the view for rendering.
return View(dataTable);
}
using IronXL;
using System.Data;
public ActionResult Index()
{
// Load the Excel workbook from a specified path.
WorkBook workBook = WorkBook.Load(@"C:\Files\Customer Data.xlsx");
// Access the first worksheet from the workbook.
WorkSheet workSheet = workBook.WorkSheets.First();
// Convert the worksheet data to a DataTable object.
// The 'true' parameter uses the first row as column headers
var dataTable = workSheet.ToDataTable(true);
// Send the DataTable to the view for rendering.
return View(dataTable);
}
Imports IronXL
Imports System.Data
Public Function Index() As ActionResult
' Load the Excel workbook from a specified path.
Dim workBook As WorkBook = WorkBook.Load("C:\Files\Customer Data.xlsx")
' Access the first worksheet from the workbook.
Dim workSheet As WorkSheet = workBook.WorkSheets.First()
' Convert the worksheet data to a DataTable object.
' The 'true' parameter uses the first row as column headers
Dim dataTable = workSheet.ToDataTable(True)
' Send the DataTable to the view for rendering.
Return View(dataTable)
End Function
Por que usar DataTable em vez de outros formatos?
No método de ação Index, carregue o arquivo Excel usando o método IronXL de Load. O caminho do arquivo Excel (incluindo o nome do arquivo) é fornecido como um parâmetro para a chamada do método. Em seguida, selecione a primeira planilha do Excel como a planilha de trabalho e carregue os dados contidos nela em um objeto DataTable. Por fim, envie o DataTable para o frontend.
DataTable é ideal para ASP.NET MVC porque se integra perfeitamente com as views Razor e oferece suporte integrado para iteração por linhas e colunas. Ao contrário dos objetos personalizados, DataTable não requer mapeamento de modelo e lida automaticamente com tipos de dados mistos. Você também pode exportar DataSet e DataTable de volta para o Excel quando necessário.
E o Tratamento de Erros para Arquivos Ausentes?
O tratamento robusto de erros garante que sua aplicação não falhe quando arquivos Excel estiverem faltando ou corrompidos. Aqui está uma versão aprimorada com manuseio adequado de exceções:
public ActionResult Index()
{
try
{
string filePath = @"C:\Files\Customer Data.xlsx";
// Check if file exists before attempting to load
if (!System.IO.File.Exists(filePath))
{
ViewBag.Error = "Excel file not found at specified location.";
return View(new DataTable());
}
// Load workbook with error handling
WorkBook workBook = WorkBook.Load(filePath);
// Verify worksheet exists
if (workBook.WorkSheets.Count == 0)
{
ViewBag.Error = "No worksheets found in the Excel file.";
return View(new DataTable());
}
WorkSheet workSheet = workBook.WorkSheets.First();
var dataTable = workSheet.ToDataTable(true);
return View(dataTable);
}
catch (Exception ex)
{
// Log the exception (consider using a logging framework)
ViewBag.Error = $"Error reading Excel file: {ex.Message}";
return View(new DataTable());
}
}
public ActionResult Index()
{
try
{
string filePath = @"C:\Files\Customer Data.xlsx";
// Check if file exists before attempting to load
if (!System.IO.File.Exists(filePath))
{
ViewBag.Error = "Excel file not found at specified location.";
return View(new DataTable());
}
// Load workbook with error handling
WorkBook workBook = WorkBook.Load(filePath);
// Verify worksheet exists
if (workBook.WorkSheets.Count == 0)
{
ViewBag.Error = "No worksheets found in the Excel file.";
return View(new DataTable());
}
WorkSheet workSheet = workBook.WorkSheets.First();
var dataTable = workSheet.ToDataTable(true);
return View(dataTable);
}
catch (Exception ex)
{
// Log the exception (consider using a logging framework)
ViewBag.Error = $"Error reading Excel file: {ex.Message}";
return View(new DataTable());
}
}
Imports System.IO
Imports System.Data
Public Function Index() As ActionResult
Try
Dim filePath As String = "C:\Files\Customer Data.xlsx"
' Check if file exists before attempting to load
If Not File.Exists(filePath) Then
ViewBag.Error = "Excel file not found at specified location."
Return View(New DataTable())
End If
' Load workbook with error handling
Dim workBook As WorkBook = WorkBook.Load(filePath)
' Verify worksheet exists
If workBook.WorkSheets.Count = 0 Then
ViewBag.Error = "No worksheets found in the Excel file."
Return View(New DataTable())
End If
Dim workSheet As WorkSheet = workBook.WorkSheets.First()
Dim dataTable = workSheet.ToDataTable(True)
Return View(dataTable)
Catch ex As Exception
' Log the exception (consider using a logging framework)
ViewBag.Error = $"Error reading Excel file: {ex.Message}"
Return View(New DataTable())
End Try
End Function
Como posso selecionar diferentes planilhas?
IronXL oferece várias maneiras de selecionar e trabalhar com planilhas específicas . Você pode acessar planilhas por índice, nome ou iterar por todas as planilhas disponíveis:
// Method 1: Select by worksheet name
WorkSheet namedSheet = workBook.GetWorkSheet("Sales Data");
// Method 2: Select by index (zero-based)
WorkSheet secondSheet = workBook.WorkSheets[1];
// Method 3: Select the default/active worksheet
WorkSheet defaultSheet = workBook.DefaultWorkSheet;
// Method 4: Iterate through all worksheets
foreach (WorkSheet sheet in workBook.WorkSheets)
{
string sheetName = sheet.Name;
// Process each worksheet
}
// Method 1: Select by worksheet name
WorkSheet namedSheet = workBook.GetWorkSheet("Sales Data");
// Method 2: Select by index (zero-based)
WorkSheet secondSheet = workBook.WorkSheets[1];
// Method 3: Select the default/active worksheet
WorkSheet defaultSheet = workBook.DefaultWorkSheet;
// Method 4: Iterate through all worksheets
foreach (WorkSheet sheet in workBook.WorkSheets)
{
string sheetName = sheet.Name;
// Process each worksheet
}
' Method 1: Select by worksheet name
Dim namedSheet As WorkSheet = workBook.GetWorkSheet("Sales Data")
' Method 2: Select by index (zero-based)
Dim secondSheet As WorkSheet = workBook.WorkSheets(1)
' Method 3: Select the default/active worksheet
Dim defaultSheet As WorkSheet = workBook.DefaultWorkSheet
' Method 4: Iterate through all worksheets
For Each sheet As WorkSheet In workBook.WorkSheets
Dim sheetName As String = sheet.Name
' Process each worksheet
Next
Como exibir dados do Excel em uma página da web?
Que código de visualização é necessário?
O próximo exemplo mostra como exibir o código DataTable retornado no exemplo anterior em um navegador da web.
O arquivo Excel usado neste exemplo é mostrado abaixo:
Arquivo Excel
Abra a index.cshtml (visualização de índice) e substitua o código pelo seguinte código HTML:
@{
ViewData["Title"] = "Home Page";
}
@using System.Data
@model DataTable
<div class="text-center">
<h1 class="display-4">Welcome to IronXL Read Excel MVC</h1>
</div>
@* Check for errors first *@
@if (ViewBag.Error != null)
{
<div class="alert alert-danger">
@ViewBag.Error
</div>
}
@* Display table only if data exists *@
@if (Model != null && Model.Rows.Count > 0)
{
<table class="table table-dark">
<tbody>
@foreach (DataRow row in Model.Rows)
{
<tr>
@for (int i = 0; i < Model.Columns.Count; i++)
{
<td>@row[i]</td>
}
</tr>
}
</tbody>
</table>
}
else
{
<p>No data to display.</p>
}
@{
ViewData["Title"] = "Home Page";
}
@using System.Data
@model DataTable
<div class="text-center">
<h1 class="display-4">Welcome to IronXL Read Excel MVC</h1>
</div>
@* Check for errors first *@
@if (ViewBag.Error != null)
{
<div class="alert alert-danger">
@ViewBag.Error
</div>
}
@* Display table only if data exists *@
@if (Model != null && Model.Rows.Count > 0)
{
<table class="table table-dark">
<tbody>
@foreach (DataRow row in Model.Rows)
{
<tr>
@for (int i = 0; i < Model.Columns.Count; i++)
{
<td>@row[i]</td>
}
</tr>
}
</tbody>
</table>
}
else
{
<p>No data to display.</p>
}
Por que usar o Bootstrap para estilizar tabelas?
O código acima usa o DataTable retornado pelo método Index como modelo. Cada linha da tabela é impressa na página da web usando um loop @for, incluindo formatação Bootstrap para decoração.
O Bootstrap fornece designs de tabelas responsivas que se ajustam automaticamente a diferentes tamanhos de tela - crucial para aplicações web modernas. A classe table-dark cria uma tabela atraente com tema escuro e fácil de ler. Para formatação mais avançada no Excel, como bordas e alinhamento de células ou padrões e cores de fundo , IronXL fornece métodos adicionais para acessar dados estruturados diretamente.
Como é a Saída Final?
Executar o projeto produz os resultados exibidos abaixo:
Tabela Bootstrap
Como posso adicionar cabeçalhos à tabela?
Para exibir cabeçalhos de coluna do seu arquivo Excel, modifique o código de visualização para incluir uma seção de cabeçalho da tabela. Ao chamar ToDataTable(true), IronXL usa automaticamente a primeira linha como nomes de coluna:
@if (Model != null && Model.Rows.Count > 0)
{
<table class="table table-dark">
<thead>
<tr>
@foreach (DataColumn column in Model.Columns)
{
<th>@column.ColumnName</th>
}
</tr>
</thead>
<tbody>
@foreach (DataRow row in Model.Rows)
{
<tr>
@for (int i = 0; i < Model.Columns.Count; i++)
{
<td>@row[i]</td>
}
</tr>
}
</tbody>
</table>
}
@if (Model != null && Model.Rows.Count > 0)
{
<table class="table table-dark">
<thead>
<tr>
@foreach (DataColumn column in Model.Columns)
{
<th>@column.ColumnName</th>
}
</tr>
</thead>
<tbody>
@foreach (DataRow row in Model.Rows)
{
<tr>
@for (int i = 0; i < Model.Columns.Count; i++)
{
<td>@row[i]</td>
}
</tr>
}
</tbody>
</table>
}
Este aprimoramento exibe cabeçalhos de coluna adequados, como "Nome do Cliente", "Custo de Envio" e "Preço Unitário", do seu arquivo Excel. Para cenários mais complexos envolvendo intervalos ou tabelas nomeadas , o IronXL fornece métodos adicionais para acessar dados estruturados diretamente.
Perguntas frequentes
Como faço para ler arquivos do Excel em ASP.NET MVC sem o Microsoft Office?
O IronXL permite ler arquivos Excel diretamente em C# sem depender do Microsoft Office. Basta instalar o IronXL via NuGet e usar WorkBook.Load() para abrir o arquivo Excel e convertê-lo em um DataTable com apenas uma linha de código: var dataTable = IronXl.WorkBook.Load('CustomerData.xlsx').DefaultWorkSheet.ToDataTable(true);
Qual é a maneira mais rápida de converter dados do Excel em um DataTable no ASP.NET?
O IronXL fornece o método ToDataTable() que converte instantaneamente planilhas do Excel em objetos System.Data.DataTable. Após carregar sua pasta de trabalho com o IronXL, acesse qualquer planilha e chame ToDataTable(true) para incluir os cabeçalhos. Essa conversão requer apenas uma linha de código e funciona perfeitamente com as views do ASP.NET MVC.
Qual versão do .NET devo usar para processar arquivos Excel em aplicações web?
O IronXL é compatível com o .NET Framework 4.6.2+ e o .NET Core 3.1+. Para novos projetos ASP.NET MVC, recomenda-se o .NET 6.0 ou superior, pois oferece melhor gerenciamento de memória ao processar arquivos Excel grandes com o IronXL e melhor suporte a async/await para operações em planilhas.
Qual modelo de projeto do Visual Studio funciona melhor para a funcionalidade de leitura de arquivos Excel?
Ao criar seu projeto, escolha o modelo 'ASP.NET Core Web App (Model-View-Controller)'. Essa estrutura MVC complementa perfeitamente o recurso de conversão de DataTable do IronXL, permitindo carregar e processar arquivos Excel nos controladores e exibir os dados de forma organizada nas visualizações.
Como faço para instalar a biblioteca de leitura do Excel no meu projeto ASP.NET?
Instale o IronXL através do Console do Gerenciador de Pacotes NuGet executando 'Install-Package IronXL.Excel'. Após a instalação, verifique se ele foi adicionado corretamente, conferindo as dependências do seu projeto e adicionando 'using IronXL;' ao seu controlador - o IntelliSense deverá reconhecer o namespace imediatamente.

