Saltar al pie de página
USANDO IRONXL

Cómo generar un archivo de Excel en Razor Pages

Las Razor Pages ofrecen un enfoque moderno para construir páginas web. En Razor Pages, el código fuente que renderiza la página web está escrito en C# en lugar de ser generado por una página del lado del servidor.

Para trabajar eficientemente con archivos de Excel, se recomienda la biblioteca IronXL sobre otras como el paquete POI Java project NPOI (notablemente utilizado con archivos de PowerPoint) y Office Interop. IronXL es una biblioteca rica en funciones, fácil de usar, que no requiere Microsoft Office y admite múltiples versiones de .NET.

Este artículo demuestra el uso de la biblioteca IronXL en C# para generar y exportar hojas de cálculo de Excel con datos ficticios y encabezados de filas en Razor Pages.

IronXL: Biblioteca de Excel para C

IronXL es una biblioteca de Excel en C# que ofrece métodos y funciones para operar con grandes conjuntos de datos utilizando procesamiento en paralelo para aumentar la potencia informática. Es fácil de usar ya que no requiere entender el funcionamiento interno y admite archivos tanto XLS como XLSX.

IronXL es ideal para importar, exportar, crear fórmulas de Excel y documentos de oficina sin necesidad de tener instalado Microsoft Office.

Aprende a importar y exportar archivos de Excel en Razor Pages usando IronXL.

Generar un archivo de Excel en Razor Pages

Para crear hojas de Excel en Razor Pages, comienza abriendo Visual Studio, creando una aplicación web de ASP.NET Core e instalando IronXL.

Prerrequisitos

Configurar la creación de archivos de Excel en Razor Pages requiere:

  1. Visual Studio (última versión)
  2. .NET Framework 6 o 7
  3. Aplicación web de .NET Core en Visual Studio

Instalar la biblioteca IronXL

Instalar IronXL usando la consola del Administrador de paquetes NuGet. Introduce este comando para instalar la biblioteca en una aplicación web de .NET Core:

Install-Package IronXL.Excel

Código para generar un archivo Excel

Así es como se escribe el código. Abre "Index.cs" en la carpeta Pages y agrega el siguiente método:

public FileResult OnPostExport()
{
    // Create a new WorkBook with XLSX format
    WorkBook workBook = new WorkBook(IronXL.ExcelFileFormat.XLSX);
    // Create a new WorkSheet named "data"
    WorkSheet workSheet = workBook.CreateWorkSheet("data");

    // Add headers to the new worksheet
    workSheet["A1"].Value = "Product EN";
    workSheet["B1"].Value = "SKU";
    workSheet["C1"].Value = "Customer";

    // Make header text bold
    workSheet["A1:C1"].Style.Font.Bold = true;

    // Add dummy data to the worksheet
    workSheet["A2"].Value = "Iron Rods";
    workSheet["A3"].Value = "Mobile Phones";
    workSheet["A4"].Value = "Chargers";

    workSheet["B2"].Value = "105";
    workSheet["B3"].Value = "285";
    workSheet["B4"].Value = "301";

    workSheet["C2"].Value = "Adam";
    workSheet["C3"].Value = "Ellen";
    workSheet["C4"].Value = "Tom";

    // Convert the WorkBook to a byte array Stream for download
    return File(workBook.ToStream().ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Grid.xlsx");
}
public FileResult OnPostExport()
{
    // Create a new WorkBook with XLSX format
    WorkBook workBook = new WorkBook(IronXL.ExcelFileFormat.XLSX);
    // Create a new WorkSheet named "data"
    WorkSheet workSheet = workBook.CreateWorkSheet("data");

    // Add headers to the new worksheet
    workSheet["A1"].Value = "Product EN";
    workSheet["B1"].Value = "SKU";
    workSheet["C1"].Value = "Customer";

    // Make header text bold
    workSheet["A1:C1"].Style.Font.Bold = true;

    // Add dummy data to the worksheet
    workSheet["A2"].Value = "Iron Rods";
    workSheet["A3"].Value = "Mobile Phones";
    workSheet["A4"].Value = "Chargers";

    workSheet["B2"].Value = "105";
    workSheet["B3"].Value = "285";
    workSheet["B4"].Value = "301";

    workSheet["C2"].Value = "Adam";
    workSheet["C3"].Value = "Ellen";
    workSheet["C4"].Value = "Tom";

    // Convert the WorkBook to a byte array Stream for download
    return File(workBook.ToStream().ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Grid.xlsx");
}
Public Function OnPostExport() As FileResult
	' Create a new WorkBook with XLSX format
	Dim workBook As New WorkBook(IronXL.ExcelFileFormat.XLSX)
	' Create a new WorkSheet named "data"
	Dim workSheet As WorkSheet = workBook.CreateWorkSheet("data")

	' Add headers to the new worksheet
	workSheet("A1").Value = "Product EN"
	workSheet("B1").Value = "SKU"
	workSheet("C1").Value = "Customer"

	' Make header text bold
	workSheet("A1:C1").Style.Font.Bold = True

	' Add dummy data to the worksheet
	workSheet("A2").Value = "Iron Rods"
	workSheet("A3").Value = "Mobile Phones"
	workSheet("A4").Value = "Chargers"

	workSheet("B2").Value = "105"
	workSheet("B3").Value = "285"
	workSheet("B4").Value = "301"

	workSheet("C2").Value = "Adam"
	workSheet("C3").Value = "Ellen"
	workSheet("C4").Value = "Tom"

	' Convert the WorkBook to a byte array Stream for download
	Return File(workBook.ToStream().ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Grid.xlsx")
End Function
$vbLabelText   $csharpLabel

En este código, se crea un nuevo WorkBook de Excel que contiene un WorkSheet. La hoja se llena con datos ficticios y el archivo generado se responde al servidor con:

  • El WorkBook se convierte en un Stream para descargarse como archivo.
  • Se establece el tipo MIME.
  • Se especifica un nombre para la descarga del archivo.

Crea un botón para descargar el archivo Excel

Reemplaza el código existente en "Index.cshtml" con lo siguiente:

@page
@model IndexModel
@{
    ViewData["Title"] = "Home page";
}

<div class="text-center">
    <h1 class="display-4">IronXL Generate Excel File</h1>
    <p class="m-5">IronXL is an Excel Library for C# that allows developers to read and edit Excel data from XLS and XLSX documents without using Microsoft.Office.Interop.Excel</p>
    <form method="post" asp-page-handler="Export">
        <button class="btn btn-success p-3">Generate Excel File!</button>
    </form>
</div>
@page
@model IndexModel
@{
    ViewData["Title"] = "Home page";
}

<div class="text-center">
    <h1 class="display-4">IronXL Generate Excel File</h1>
    <p class="m-5">IronXL is an Excel Library for C# that allows developers to read and edit Excel data from XLS and XLSX documents without using Microsoft.Office.Interop.Excel</p>
    <form method="post" asp-page-handler="Export">
        <button class="btn btn-success p-3">Generate Excel File!</button>
    </form>
</div>
HTML

Este HTML crea un formulario con asp-page-handler configurado en "Export", lo que permite a la aplicación exportar el archivo de Excel a la máquina local cuando el usuario hace clic en el botón "Generate Excel File!" y se activa una descarga en el navegador.

Ejecutar el proyecto

Ejecuta el proyecto y verás una pantalla en el navegador. Haz clic en el botón verde para descargar el archivo de Excel.

¡Cómo generar un archivo de Excel en Razor Pages, Figura 1: IronXL generar hojas de Excel IronXL generar hojas de Excel

Después de hacer clic en "Generate Excel File!", el archivo se descargará.

¡Cómo generar un archivo de Excel en Razor Pages, Figura 2: IronXL archivo descargado IronXL archivo descargado

Abra el archivo Excel generado

El contenido del archivo de Excel generado coincide con la salida del código con un formato perfecto. La instantánea del archivo de Excel generado se muestra a continuación.

¡Cómo generar un archivo de Excel en Razor Pages, Figura 3: IronXL archivo generado IronXL archivo generado

IronXL mejor que la competencia

IronXL es una herramienta superior para trabajar con formatos XLS y XLSX sin limitaciones como NPOI, que es más lento debido a estar basado en Java, mientras que IronXL es C#. En aplicaciones de ASP.NET Core que generan hojas de cálculo grandes/múltiples, opta por IronXL sobre POI.

IronXL permite crear y editar archivos de Excel sin Microsoft Office. A diferencia de Microsoft Interop, IronXL no necesita llamar al ActiveX de Microsoft Excel para operaciones o exportaciones de Excel. También permite exportar archivos CSV al formato de Excel.

IronXL también proporciona amplias características para interactuar con archivos de Excel, incluyendo convertir entre formatos populares, insertar funciones matemáticas, agregar gráficos y insertar imágenes.

Conclusión

Este artículo muestra cómo usar IronXL para generar un archivo de Excel en Razor Pages sin necesitar Microsoft Excel ActiveX y facilitar la descarga de archivos.

Explora más tutoriales sobre cómo crear archivos de Excel.

IronXL es gratuito para el desarrollo no comercial. Hay una prueba gratuita disponible para pruebas de producción. Consulta los planes de precios para obtener más detalles sobre precios y licencias.

Preguntas Frecuentes

¿Cómo puedo generar un archivo Excel en Razor Pages sin usar Interop?

Puedes generar un archivo Excel en Razor Pages sin usar Interop utilizando la biblioteca IronXL. Esta biblioteca te permite crear y manipular archivos Excel directamente en C#, sin necesidad de Microsoft Office, creando un WorkBook y agregando datos a un WorkSheet.

¿Qué pasos están involucrados en la instalación de IronXL para un proyecto de Razor Pages?

Para instalar IronXL para un proyecto de Razor Pages, puedes usar la Consola del Administrador de Paquetes NuGet en Visual Studio. Ejecuta el comando Install-Package IronXL.Excel para agregar la biblioteca a tu proyecto.

¿Puedo usar IronXL para exportar datos desde una aplicación Razor Pages?

Sí, IronXL puede usarse para exportar datos desde una aplicación Razor Pages. Puedes convertir tus datos en formato Excel y luego usar Razor Pages para transmitir esos datos de vuelta al cliente como un archivo descargable.

¿Cuáles son los beneficios de usar IronXL sobre Microsoft Interop para generar archivos Excel?

IronXL ofrece varios beneficios sobre Microsoft Interop, incluyendo un rendimiento más rápido, no requiere instalación de Microsoft Office y la capacidad de manejar grandes conjuntos de datos eficientemente mediante procesamiento en paralelo.

¿Es posible manejar grandes conjuntos de datos Excel en Razor Pages usando IronXL?

Sí, IronXL es capaz de manejar grandes conjuntos de datos Excel eficientemente. Soporta el procesamiento en paralelo, lo cual puede mejorar el rendimiento y la velocidad al trabajar con datos extensos.

¿IronXL soporta diferentes formatos de archivo Excel?

IronXL soporta tanto los formatos de archivo XLS como XLSX, permitiendo una manipulación completa de archivos Excel, incluyendo importación, exportación y formateo de datos.

¿Hay opciones gratuitas para usar IronXL en desarrollo?

IronXL está disponible de forma gratuita para desarrollo no comercial. Se proporciona una prueba gratuita para pruebas de producción, con varios planes de precios disponibles para uso comercial.

¿Cómo puedo activar una descarga de archivo Excel en Razor Pages usando IronXL?

Para activar una descarga de archivo Excel en Razor Pages usando IronXL, crea un WorkBook, llénalo con datos y luego conviértelo en una matriz de bytes. Usa el método File de Razor Pages para transmitir la matriz de bytes como un archivo descargable al usuario.

¿Qué hace de IronXL una opción preferible sobre otras bibliotecas como NPOI?

IronXL es a menudo preferido sobre bibliotecas como NPOI debido a su implementación nativa en C#, que ofrece un rendimiento más rápido, facilidad de uso y no depende de componentes de Java, lo que lo hace ideal para aplicaciones ASP.NET Core.

Jordi Bardia
Ingeniero de Software
Jordi es más competente en Python, C# y C++. Cuando no está aprovechando sus habilidades en Iron Software, está programando juegos. Compartiendo responsabilidades para pruebas de productos, desarrollo de productos e investigación, Jordi agrega un valor inmenso a la mejora continua del producto. La experiencia variada lo mantiene ...
Leer más