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 a los desarrolladores de ASP.NET MVC leer archivos de Excel directamente en C# sin dependencias de Microsoft Office, convirtiendo datos de Excel a System.Data.DataTable para una fácil visualización en vistas web con solo unas pocas líneas de código.

Inicio rápido: cargar y convertir una hoja de Excel a una tabla de datos en MVC

Este ejemplo muestra cómo comenzar en segundos: cargue un libro de Excel, seleccione su primera hoja de cálculo y conviértala en un System.Data.DataTable usando IronXL , sin interoperabilidad, sin complicaciones.

  1. Instala IronXL con el Administrador de Paquetes NuGet

    PM > Install-Package IronXl.Excel
  2. Copie y ejecute este fragmento de código.

    var dataTable = IronXl.WorkBook.Load("CustomerData.xlsx").DefaultWorkSheet.ToDataTable(true);
  3. Despliegue para probar en su entorno real

    Comienza a usar IronXL en tu proyecto hoy mismo con una prueba gratuita

    arrow pointer

¿Cómo crear un proyecto ASP.NET para leer en Excel?

¿Por qué Visual Studio 2022 funciona mejor para esto?

Con Visual Studio 2022, cree un nuevo proyecto ASP.NET. Visual Studio 2022 ofrece un excelente soporte para los marcos .NET 6+, IntelliSense mejorado para los métodos IronXL y un mejor rendimiento al trabajar con archivos grandes de Excel. La integración NuGet del IDE hace que la instalación de IronXL sea particularmente sencilla.

¿Qué plantilla de proyecto debo elegir?

Para leer archivos Excel en ASP.NET, elija la plantilla "ASP.NET Core Web App (Model-View-Controller)". Esta plantilla ofrece una estructura MVC limpia que separa el procesamiento de datos (lectura de Excel) de la lógica de presentación. El patrón MVC funciona perfectamente con la conversión IronXL de DataTable, lo que le permite cargar hojas de cálculo en controladores y mostrarlas en vistas sin problemas.

¿Qué versión de .NET se recomienda?

IronXL funciona con .NET Framework 4.6.2+ y .NET Core 3.1+. Para los nuevos proyectos ASP.NET MVC, utilice .NET 6.0 o superior para obtener un rendimiento y una seguridad óptimos. Estas versiones ofrecen una mejor gestión de la memoria al procesar grandes archivos de Excel y un mejor soporte async/await para convertir tipos de archivos de hojas de cálculo.

¿Cómo instalo la biblioteca IronXL?

¿Cuáles son los requisitos de instalación?


¿Qué método de instalación es más rápido?

Después de crear el nuevo proyecto, instale la biblioteca IronXL. Siga estos pasos para instalar IronXL. Abre la Consola del Administrador de Paquetes NuGet y ejecuta el siguiente comando:

Install-Package IronXl.Excel

¿Cómo puedo verificar la instalación?

Para verificar que IronXL esté instalado correctamente, verifique las dependencias de su proyecto en el Explorador de soluciones. Debería ver "IronXL" en la lista de "Dependencias > Paquetes". Además, intente agregar using IronXL; en la parte superior del archivo del controlador: IntelliSense debería reconocer el espacio de nombres inmediatamente. Para solucionar problemas de instalación, visite la guía de licencias.

¿Cómo leo un archivo Excel en mi controlador?

¿Qué código va en la acción del controlador?

Abra el controlador predeterminado en su proyecto ASP.NET (por ejemplo, HomeController.cs) y reemplace el método Index con el siguiente 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 qué utilizar DataTable en lugar de otros formatos?

En el método de acción Index, cargue el archivo Excel usando el método Load de IronXL. La ruta del archivo Excel (incluyendo el nombre del archivo) se proporciona como un parámetro a la llamada del método. A continuación, seleccione la primera hoja de Excel como hoja de trabajo y cargue los datos que contiene en un objeto DataTable. Por último, envíe el DataTable al frontend.

DataTable es ideal para ASP.NET MVC porque se integra perfectamente con las vistas de Razor y proporciona soporte integrado para iterar a través de filas y columnas. A diferencia de los objetos personalizados, DataTable no requiere mapeo de modelos y maneja tipos de datos mixtos automáticamente. También puede exportar DataSet y DataTable a Excel cuando sea necesario.

¿Qué pasa con la gestión de errores de los archivos que faltan?

La gestión de errores garantiza que la aplicación no se bloquee si faltan archivos de Excel o están dañados. Aquí tienes una versión mejorada con un tratamiento adecuado de las excepciones:

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

¿Cómo puedo seleccionar diferentes hojas de cálculo?

IronXL proporciona múltiples formas de seleccionar y trabajar con hojas de trabajo específicas . Puede acceder a las hojas de cálculo por índice, nombre o iterar por todas las hojas disponibles:

// 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

¿Cómo mostrar datos de Excel en una página web?

¿Qué código de vista se necesita?

El siguiente ejemplo muestra cómo mostrar el DataTable devuelto en el ejemplo anterior en un navegador web.

A continuación se muestra el archivo Excel de trabajo utilizado en este ejemplo:

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

*Archivo de Excel*

Abra index.cshtml (vista de índice) y reemplace el código con el siguiente 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 qué usar Bootstrap para el diseño de tablas?

El código anterior utiliza el DataTable devuelto por el método Index como modelo. Cada fila de la tabla se imprime en la página web utilizando un bucle @for, incluido el formato Bootstrap para la decoración.

Bootstrap ofrece diseños de tablas adaptables que se ajustan automáticamente a distintos tamaños de pantalla, algo crucial para las aplicaciones web modernas. La clase table-dark crea una atractiva tabla de temática oscura que es fácil de leer. Para un formato de Excel más avanzado, como bordes y alineación de celdas o patrones y colores de fondo , IronXL proporciona métodos adicionales para acceder directamente a datos estructurados.

¿Cómo es el resultado final?

Al ejecutar el proyecto se obtienen los resultados que se muestran a continuación:

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

*Tabla Bootstrap*

¿Cómo puedo añadir encabezados a la tabla?

Para mostrar los encabezados de columna de su archivo Excel, modifique el código de la vista para incluir una sección de encabezado de tabla. Al llamar a ToDataTable(true), IronXL utiliza automáticamente la primera fila como nombre de columna:

@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 mejora muestra los encabezados de columna correctos, como "Nombre del cliente", "Costo de envío" y "Precio unitario", desde su archivo de Excel. Para escenarios más complejos que involucran rangos o tablas con nombre , IronXL proporciona métodos adicionales para acceder directamente a datos estructurados.

Preguntas Frecuentes

¿Cómo puedo leer archivos Excel en ASP.NET MVC sin Microsoft Office?

IronXL le permite leer archivos de Excel directamente en C# sin ninguna dependencia de Microsoft Office. Simplemente instale IronXL a través de NuGet, luego utilice WorkBook.Load() para abrir su archivo de Excel y convertirlo en una DataTable con sólo una línea de código: var dataTable = IronXl.WorkBook.Load('CustomerData.xlsx').DefaultWorkSheet.ToDataTable(true);

¿Cuál es la forma más rápida de convertir datos de Excel a DataTable en ASP.NET?

IronXL proporciona el método ToDataTable() que convierte instantáneamente las hojas de cálculo de Excel en objetos System.Data.DataTable. Después de cargar su libro de trabajo con IronXL, acceda a cualquier hoja de cálculo y llame a ToDataTable(true) para incluir los encabezados. Esta conversión sólo requiere una línea de código y funciona perfectamente con las vistas MVC de ASP.NET.

¿Qué versión de .NET debo utilizar para el procesamiento de archivos Excel en aplicaciones web?

IronXL es compatible con .NET Framework 4.6.2+ y .NET Core 3.1+. Para los nuevos proyectos ASP.NET MVC, se recomienda .NET 6.0 o superior, ya que ofrece una mejor gestión de la memoria al procesar grandes archivos de Excel con IronXL y un mejor soporte async/await para las operaciones de hoja de cálculo.

¿Qué plantilla de proyecto de Visual Studio funciona mejor para la funcionalidad de lectura de Excel?

Elija la plantilla 'ASP.NET Core Web App (Model-View-Controller)' al crear su proyecto. Esta estructura MVC complementa perfectamente la función de conversión DataTable de IronXL, lo que le permite cargar y procesar archivos de Excel en controladores mientras muestra los datos limpiamente en vistas.

¿Cómo instalo la biblioteca de lectura de Excel en mi proyecto ASP.NET?

Instale IronXL a través de la consola del administrador de paquetes NuGet ejecutando 'Install-Package IronXl.Excel'. Después de la instalación, verifica que se ha añadido correctamente comprobando las dependencias de tu proyecto y añadiendo 'using IronXL;' a tu controlador - IntelliSense debería reconocer el espacio de nombres inmediatamente.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más

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

¿Listo para empezar?
Nuget Descargas 1,890,100 | Versión: 2026.3 recién lanzado

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

¿Aún desplazándote?

¿Quieres una prueba rápida? PM > Install-Package IronXl.Excel
ejecuta una muestra observa cómo tus datos se convierten en una hoja de cálculo.