Ler Arquivos Excel em ASP.NET MVC Usando C# com IronXL

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

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.

  1. Instale IronXL com o Gerenciador de Pacotes NuGet

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

    var dataTable = IronXl.WorkBook.Load("CustomerData.xlsx").DefaultWorkSheet.ToDataTable(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 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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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:

Excel spreadsheet with customer names, shipping costs, and unit prices - sample data for web display tutorial

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>
}
$vbLabelText   $csharpLabel

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:

Bootstrap table displaying Excel customer data with names, shipping costs, and unit prices in ASP.NET MVC application

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>
}
$vbLabelText   $csharpLabel

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.

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,052,917 | Versão: 2026.6 just released
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.