Read Excel Files in ASP.NET MVC Using C# with IronXL

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

IronXL permite aos desenvolvedores ASP.NET MVC ler arquivos Excel diretamente em C# sem dependências do Microsoft Office, convertendo dados do Excel para System.Data.DataTable para exibição fácil em visualizações 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: carregar um workbook do Excel, escolher sua primeira planilha e convertê-la para um System.Data.DataTable usando o 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 os frameworks .NET 6+, um IntelliSense melhorado para métodos IronXL, e um desempenho melhor ao trabalhar com grandes arquivos Excel. A integração do NuGet no 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 de DataTable de IronXL, permitindo que você carregue planilhas em controladores e as exiba em visualizações sem interrupções.

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?

Depois de 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 IronXL está corretamente instalado, 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 topo do arquivo do seu controlador - o IntelliSense deve 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 no 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);
}
$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 Load de IronXL. 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. Finalmente, envie o DataTable para o frontend.

DataTable é ideal para ASP.NET MVC porque se integra perfeitamente com visualizações Razor e fornece suporte embutido para iterar através de linhas e colunas. Ao contrário de objetos personalizados, DataTable não requer mapeamento de modelo e lida com tipos de dados mistos automaticamente. 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());
    }
}
$vbLabelText   $csharpLabel

Como posso selecionar diferentes planilhas?

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
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
}
$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:

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 do método Index como um modelo. Cada linha da tabela é impressa na página 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 de tema escuro atraente que é fácil de ler. Para formatação avançada de 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

Esta melhoria exibe cabeçalhos de coluna apropriados 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, 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

A PHP Error was encountered

Severity: Notice

Message: Undefined index: IronXl.Excel

Filename: helpers/counter_helper.php

Line Number: 85

Backtrace:

File: /var/www/ironpdf.com/application/helpers/counter_helper.php
Line: 85
Function: _error_handler

File: /var/www/ironpdf.com/application/views/main/sections/ready_to_started_202509.php
Line: 12
Function: getTotalDonwloadNumber

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 489
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

A PHP Error was encountered

Severity: Notice

Message: Undefined index: IronXl.Excel

Filename: helpers/counter_helper.php

Line Number: 85

Backtrace:

File: /var/www/ironpdf.com/application/helpers/counter_helper.php
Line: 85
Function: _error_handler

File: /var/www/ironpdf.com/application/views/main/sections/ready_to_started_202509.php
Line: 19
Function: getTotalDonwloadNumber

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 489
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

Pronto para começar?
Nuget Downloads 1,890,100 | Versão: 2026.3 acaba de ser lançado

A PHP Error was encountered

Severity: Notice

Message: Undefined index: IronXl.Excel

Filename: helpers/counter_helper.php

Line Number: 85

Backtrace:

File: /var/www/ironpdf.com/application/helpers/counter_helper.php
Line: 85
Function: _error_handler

File: /var/www/ironpdf.com/application/views/main/sections/still_scrolling_202512.php
Line: 17
Function: getTotalDonwloadNumber

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 71
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/how-to/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

A PHP Error was encountered

Severity: Notice

Message: Undefined index: IronXl.Excel

Filename: helpers/counter_helper.php

Line Number: 85

Backtrace:

File: /var/www/ironpdf.com/application/helpers/counter_helper.php
Line: 85
Function: _error_handler

File: /var/www/ironpdf.com/application/views/main/sections/still_scrolling_202512.php
Line: 24
Function: getTotalDonwloadNumber

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 71
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/how-to/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

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.