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 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 um caderno Excel, escolha sua primeira planilha e converta-a em um System.Data.DataTable usando IronXL — sem Interop, 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+, 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:

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; 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);
}
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 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 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?

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:

:path=/static-assets/excel/content-code-examples/how-to/asp-net-mvc-read-excel-file-5.cs
// 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
}
Imports System

' 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 DataTable retornado no exemplo anterior em um navegador web.

O arquivo Excel usado neste exemplo é mostrado abaixo:

Planilha do Excel com nomes de clientes, custos de envio e preços unitários - dados de exemplo para o tutorial de exibição na web

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 exibindo dados de clientes do Excel com nomes, custos de envio e preços unitários em um aplicativo ASP.NET MVC

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>
}
@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

Esse 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.

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,134,203 | Versão: 2026.7 recém-lançado
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.