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 Excel em System.Data.DataTable para fácil exibição em visualizações da web com apenas algumas linhas de código.
Este exemplo mostra como começar em segundos: carregue um caderno Excel, escolha sua primeira planilha e converta-a em um System.Data.DataTable usando IronXL — sem Interop, sem complicações.
-
1Install IronXL with NuGet Package Manager
-
2Copie e execute este trecho de código.
var dataTable = IronXL.WorkBook.Load("CustomerData.xlsx").DefaultWorkSheet.ToDataTable(true);C# -
3Implante 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+, melhor IntelliSense para métodos IronXL e melhor desempenho ao trabalhar com arquivos Excel grandes. A integração do NuGet do 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 IronXL da DataTable, permitindo que você carregue planilhas em controladores e as exiba em visualizações de forma integrada.
Qual Versão do .NET é Recomendada?
O IronXL funciona com o .NET Framework 4.6.2+ e o .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 estas etapas para instalar o IronXL. Abra o Console do Gerenciador de Pacotes NuGet e execute o seguinte comando:
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; na parte superior do seu arquivo de controlador - o IntelliSense deve reconhecer imediatamente o namespace. 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);
}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 FunctionPor Que Usar DataTable ao Invés de Outro Formato?
No método de ação Index, carregue o arquivo Excel usando o método IronXL da 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 folha Excel como a folha de trabalho e carregue os dados contidos nela em um objeto DataTable. Finalmente, envie o DataTable para o frontend.
O DataTable é ideal para ASP.NET MVC porque se integra perfeitamente às visualizações do Razor e fornece suporte interno para iterar em linhas e colunas. Ao contrário dos objetos personalizados, o DataTable não exige 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 Function Index() As ActionResult
Try
Dim filePath As String = "C:\Files\Customer Data.xlsx"
' Check if file exists before attempting to load
If Not System.IO.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 FunctionComo posso selecionar diferentes planilhas?
O IronXL fornece 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
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
NextComo 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 DataTable retornado no exemplo anterior em um navegador web.
O arquivo Excel usado neste exemplo é mostrado abaixo:

Arquivo Excel
Abra o 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>
}
Por que usar o Bootstrap para estilizar tabelas?
O código acima usa o DataTable retornado do método Index como um modelo. Cada linha da tabela é impressa na página web usando um loop @for, incluindo a formatação do 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 com tema escuro atraente e fácil de ler. Para formatar o Excel de forma mais avançada, como bordas e alinhamento de células ou padrões e cores de fundo, o 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), o IronXL usa automaticamente a primeira linha como nomes de colunas:
@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>
}netEsse aprimoramento exibe os cabeçalhos de coluna corretos, como "Nome do Cliente", "Custo de Envio" e "Preço Unitário" do seu arquivo Excel. Para cenários mais complexos envolvendo intervalos nomeados 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.
Why choose DataTable format when using IronXL?
The `DataTable` format is ideal for ASP.NET MVC applications because it integrates seamlessly with Razor views, allows for straightforward iteration over data rows and columns without model mapping, and accommodates mixed data types efficiently.
What steps are required to install IronXL in an ASP.NET MVC project?
Installation involves adding IronXL via the NuGet Package Manager in Visual Studio. It requires opening the NuGet Package Manager Console and executing a specific command to add IronXL to the project's dependencies.
How do you handle errors when reading Excel files with IronXL?
IronXL supports robust error handling such as checking file existence before loading, catching exceptions during the workbook loading process, and managing missing worksheet scenarios. This ensures application stability even if Excel files are corrupted or absent.
Can IronXL select specific worksheets from an Excel file?
Yes, IronXL allows developers to select worksheets by name, index, or default setting, and it also provides functionality to iterate through all available worksheets in a workbook.
What are some styling options for displaying Excel data using IronXL in web apps?
IronXL, when used with ASP.NET MVC, enables styling options like Bootstrap for responsive table layouts and additional IronXL methods for setting cell borders, alignment, patterns, and colors within spreadsheets.

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 bem estruturados e visualmente atraentes.