USO DE IRONXL

Cómo abrir un archivo Excel en ASP .NET Core

Chaknith Bin
Chaknith Bin
22 de julio, 2023
Actualizado 23 de agosto, 2024
Compartir:

Este tutorial demostrará cómo abrir un archivo de Excel utilizando IronXL en una aplicación ASP.NET Core utilizando la biblioteca IronXL. Cubrirá los pasos básicos para leer archivos Excel y luego mostrar datos de ellos y guardar los datos modificados de nuevo en el archivo.

¿Qué es IronXL?

IronXL es una biblioteca de Excel para .NET que ofrece funcionalidades para trabajar con documentos Excel sin necesitar dependencias de Microsoft Excel o Office Interop. Soporta tanto .NET Framework como .NET Core, proporcionando capacidades para escribir, manipular y leer archivos Excel con sólo unas pocas líneas de código. Para obtener un tutorial detallado sobre cómo leer archivos Excel, consulte este tutorial de Excel.

La biblioteca IronXL puede leer y escribir documentos de Excel, extraer datos de ellos, manipular los datos, e incluso crear nuevos archivos de Excel desde cero. IronXL no solo admite el formato .XLS, sino que también es compatible con .XLSX, que es un formato de archivo basado en XML desarrollado por Microsoft para representar hojas de cálculo.

Requisitos previos

Antes de sumergirte en el código, asegúrate de tener lo siguiente:

  1. .NET Core 3.1 o superior instalado.

  2. Un IDE adecuado para el desarrollo en .NET (se recomienda Microsoft Visual Studio).

  3. Conocimientos básicos de ASP.NET Core y Razor Pages.

Crear un nuevo proyecto .NET Core

  1. Abra Microsoft Visual Studio y seleccione "Crear un nuevo proyecto".

  2. Elija "ASP.NET Core Web App" de la lista de plantillas de proyecto y haga clic en "Siguiente".

  3. Introduzca un nombre para el proyecto, por ejemplo, "Open_ExcelFile.NET_Core", seleccione una ubicación y haga clic en "Siguiente".

  4. Elija ".NET Core" como marco de trabajo de destino y "ASP.NET Core 3.1 o superior" como versión. En la sección "Plantilla de proyecto", seleccione "Aplicación web" y haga clic en "Crear".

Instalar el paquete IronXL

El siguiente paso es instalar el paquete IronXL en este proyecto recién creado:

  1. Haga clic con el botón derecho en el proyecto en el Explorador de soluciones y seleccione "Administrar paquetes NuGet".

  2. En la pestaña "Explorar", busca "IronXL" y haz clic en "Instalar" para el paquete IronXL.Excel.

    Cómo abrir un archivo Excel en ASP .NET Core, Figura 1: Buscar e instalar el paquete IronXL en la IU del Administrador de paquetes NuGet

    Busque e instale el paquete IronXL en el Administrador de paquetes de NuGet

  3. Espere a que se instale el paquete.

    Su proyecto ASP.NET Core ya está configurado, y la biblioteca IronXL está instalada y lista para usar.

Crear una página Razor

Ahora, vamos a crear una Página Razor para escribir el código para abrir el archivo de Excel.

  1. Haga clic con el botón derecho del ratón en la carpeta "Páginas" del Explorador de soluciones y seleccione "Añadir" > "Página Razor".

  2. Introduzca "ExcelOpener" como nombre de la página y haga clic en "Añadir".

    Cómo abrir un archivo de Excel en ASP .NET Core, Figura 2: Crear una nueva página Razer

    Crear una nueva página Razer

    Esto creará dos archivos: ExcelOpener.cshtml y ExcelOpener.cshtml.cs.

    El archivo ExcelOpener.cshtml contiene el marcado HTML para la página y el archivo ExcelOpener.cshtml.cs contiene el código C# asociado a la página.

Lectura de archivos Excel

Sumerjámonos en el código. La clase proporcionada ExcelOpenerModel es un Modelo de Página Razor. Esta clase tiene una propiedad List<List<string>> llamada Data, que se utilizará para almacenar los datos leídos de un archivo Excel.

public List<List<string>> Data { get; set; }

public ExcelOpenerModel()
{
    Data = new List<List<string>>();
}
public List<List<string>> Data { get; set; }

public ExcelOpenerModel()
{
    Data = new List<List<string>>();
}
Public Property Data() As List(Of List(Of String))

'INSTANT VB WARNING: The following constructor is declared outside of its associated class:
'ORIGINAL LINE: public ExcelOpenerModel()
Public Sub New()
	Data = New List(Of List(Of String))()
End Sub
$vbLabelText   $csharpLabel

En el método OnGet, se utiliza IronXL para cargar un archivo de Excel y leer los datos de la hoja de cálculo predeterminada (la primera hoja del libro de trabajo). Cada fila se representa como un List<string>, y todas estas listas se añaden luego a la propiedad Data.

public void OnGet()
{
    try
    {
        Data = new List<List<string>>();
        //Load your Excel file
        var workbook = WorkBook.Load(@"C:\Users\Administrator\Documents\Loan.xlsx");

        //Select your Worksheet
        WorkSheet sheet = workbook.DefaultWorkSheet;

        for (int i = 0; i < sheet.RowCount; i++)
        {
            var row = new List<string>();
            for (int j = 0; j < sheet.ColumnCount; j++)
            {
                row.Add(sheet.GetCellAt(i, j).Value.ToString());
            }
            Data.Add(row);
        }
    }
    catch (Exception ex)
    {
        //Handle exceptions here
        Console.WriteLine(ex.Message);
    }
}
public void OnGet()
{
    try
    {
        Data = new List<List<string>>();
        //Load your Excel file
        var workbook = WorkBook.Load(@"C:\Users\Administrator\Documents\Loan.xlsx");

        //Select your Worksheet
        WorkSheet sheet = workbook.DefaultWorkSheet;

        for (int i = 0; i < sheet.RowCount; i++)
        {
            var row = new List<string>();
            for (int j = 0; j < sheet.ColumnCount; j++)
            {
                row.Add(sheet.GetCellAt(i, j).Value.ToString());
            }
            Data.Add(row);
        }
    }
    catch (Exception ex)
    {
        //Handle exceptions here
        Console.WriteLine(ex.Message);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Explicación de los métodos clave

  • WorkBook.Load(filepath): Este método carga el documento de Excel desde la ruta de archivo especificada. Ayuda a cargar y leer la hoja Excel.
  • workbook.DefaultWorkSheet: Esta propiedad obtiene la hoja de cálculo de Excel predeterminada (primera) en la hoja de cálculo de Excel.
  • sheet.GetCellAt(i, j).Value.ToString(): Esto obtiene la celda en los índices de fila y columna especificados y convierte su valor a una cadena. Este es un ejemplo de un método de índice que puede acceder a celdas o rangos específicos dentro de un archivo Excel basado en índices de fila y columna.

Breve explicación

En el archivo ExcelOpener.cshtml.cs, una clase llamada ExcelOpenerModel representa el modelo de la página Razor. Contiene una propiedad llamada Data de tipo List<List<string>>, que contendrá los datos del archivo de Excel.

El método OnGet se llama cuando se solicita la página y es responsable de leer los datos del archivo Excel. Utiliza IronXL para cargar el archivo Excel, selecciona la hoja de cálculo predeterminada e itera sobre las filas y columnas para poblar la propiedad Data.

Escribir archivos Excel

El método OnPost en la clase ExcelOpenerModel se utiliza para guardar modificaciones en el archivo de Excel. Primero carga el archivo de Excel y recupera la hoja de trabajo predeterminada. A continuación, escribe los valores de Data en las celdas de la hoja de cálculo y guarda el libro en un nuevo archivo.

public void OnPost()
{
    try
    {
        //Load your Excel file
        var workbook = WorkBook.Load(@"C:\Users\Administrator\Documents\Loan.xlsx");

        //Select your Worksheet
        var sheet = workbook.DefaultWorkSheet;

        for (int i = 0; i < Data.Count; i++)
        {
            for (int j = 0; j < Data [i].Count; j++)
            {
                sheet.SetCellValue(i, j, Data [i][j]);
            }
        }

        // Save the Excel file
        var filename = "C:\\ModifiedData.xlsx"
        workbook.SaveAs(filename);
    }
    catch (Exception ex)
    {
        //Handle exceptions here
        Console.WriteLine(ex.Message);
    }
}
public void OnPost()
{
    try
    {
        //Load your Excel file
        var workbook = WorkBook.Load(@"C:\Users\Administrator\Documents\Loan.xlsx");

        //Select your Worksheet
        var sheet = workbook.DefaultWorkSheet;

        for (int i = 0; i < Data.Count; i++)
        {
            for (int j = 0; j < Data [i].Count; j++)
            {
                sheet.SetCellValue(i, j, Data [i][j]);
            }
        }

        // Save the Excel file
        var filename = "C:\\ModifiedData.xlsx"
        workbook.SaveAs(filename);
    }
    catch (Exception ex)
    {
        //Handle exceptions here
        Console.WriteLine(ex.Message);
    }
}
Public Sub OnPost()
	Try
		'Load your Excel file
		Dim workbook = WorkBook.Load("C:\Users\Administrator\Documents\Loan.xlsx")

		'Select your Worksheet
		Dim sheet = workbook.DefaultWorkSheet

		For i As Integer = 0 To Data.Count - 1
			Dim j As Integer = 0
			Do While j < Data (i).Count
				sheet.SetCellValue(i, j, Data (i)(j))
				j += 1
			Loop
		Next i

		' Save the Excel file
		Dim filename = "C:\ModifiedData.xlsx" workbook.SaveAs(filename)
	Catch ex As Exception
		'Handle exceptions here
		Console.WriteLine(ex.Message)
	End Try
End Sub
$vbLabelText   $csharpLabel

Explicación de los métodos clave

  • sheet.SetCellValue(i, j, Data[i][j]): Este método establece el valor de la celda en los índices de fila y columna especificados.
  • workbook.SaveAs(filepath): Este método guarda el libro de Excel en la ruta de archivo especificada.

Breve explicación

El método OnPost se llama cuando se envía el formulario y guarda los datos modificados de nuevo en el archivo Excel. Carga el archivo Excel, selecciona la hoja de trabajo predeterminada y actualiza los valores de las celdas según los datos modificados recibidos del formulario.

Formulario HTML para editar datos de Excel

En ExcelOpener.cshtml, se define un formulario para mostrar y editar los datos del archivo de Excel. Cada valor de celda se muestra en un campo de entrada de texto. Después de editar, al hacer clic en el botón "Guardar" se enviará el formulario, activando el método OnPost y guardando los cambios en el archivo de Excel.

@page
@model Open_Excel_File_.NET_Core.Pages.ExcelOpenerModel

<form method="post">
    <table class="table table-bordered table-striped">
        <!-- Bootstrap classes for tables -->
        @for (int i = 0; i < Model.Data.Count; i++)
        {
            <tr>
                @for (int j = 0; j < Model.Data[i].Count; j++)
                {
                    <td>
                        <input type="text" class="form-control" name="Data[@i][@j]" value="@Model.Data[i][j]" /> <!-- Bootstrap class for form controls -->
                    </td>
                }
            </tr>
        }
    </table>

    <input type="submit" class="btn btn-primary" value="Save" /> <!-- Bootstrap classes for buttons -->
</form>
@page
@model Open_Excel_File_.NET_Core.Pages.ExcelOpenerModel

<form method="post">
    <table class="table table-bordered table-striped">
        <!-- Bootstrap classes for tables -->
        @for (int i = 0; i < Model.Data.Count; i++)
        {
            <tr>
                @for (int j = 0; j < Model.Data[i].Count; j++)
                {
                    <td>
                        <input type="text" class="form-control" name="Data[@i][@j]" value="@Model.Data[i][j]" /> <!-- Bootstrap class for form controls -->
                    </td>
                }
            </tr>
        }
    </table>

    <input type="submit" class="btn btn-primary" value="Save" /> <!-- Bootstrap classes for buttons -->
</form>
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Navegar a la página

En _Layout.cshtml, se añade un enlace a la página en el menú de navegación. Al hacer clic en este enlace, accederá a la página de inicio de Excel.

<li class="nav-item">
    <a class="nav-link text-dark" asp-area="" asp-page="/ExcelOpener">ExcelOpener</a>
</li>
<li class="nav-item">
    <a class="nav-link text-dark" asp-area="" asp-page="/ExcelOpener">ExcelOpener</a>
</li>
HTML

Ejecución de la aplicación y explicación de los resultados

Compila la aplicación haciendo clic en el botón "Build" en Visual Studio o utilizando el atajo Ctrl + Shift + B. Ejecute la aplicación pulsando F5 o haciendo clic en el botón "Inicio" de Visual Studio.

Una vez ejecutada la aplicación, navegue hasta la página "ExcelOpener" pulsando en el enlace correspondiente de la barra de navegación. La página mostrará los datos de Excel en formato tabular.

Puede modificar los datos de la tabla y hacer clic en el botón "Guardar" para guardar los cambios en el archivo Excel.

Cómo abrir un archivo Excel en ASP .NET Core, Figura 3: Mostrar datos de Excel en la aplicación web

Mostrar datos de Excel en la aplicación web

Este tutorial muestra cómo abrir un archivo de Excel utilizando IronXL en una aplicación ASP.NET Core. IronXL proporciona una forma sencilla y cómoda de leer y manipular archivos Excel. Puede explorar la documentación de IronXL para conocer características y funcionalidades más avanzadas.

IronXL ofrece una prueba gratuita, permitiéndote evaluar sus capacidades. Si lo encuentra útil para sus proyectos, puede adquirir una licencia a partir de $749.

Chaknith Bin
Ingeniero de software
Chaknith trabaja en IronXL e IronBarcode. Tiene una gran experiencia en C# y .NET, ayudando a mejorar el software y a apoyar a los clientes. Sus conocimientos de las interacciones con los usuarios contribuyen a mejorar los productos, la documentación y la experiencia general.
< ANTERIOR
Cómo trabajar con archivos de Excel usando IronXL: Una librería .NET para Excel
SIGUIENTE >
Cómo combinar celdas en Excel sin perder datos