USO DE IRONXL

Cómo exportar datos a Excel en Blazor utilizando IronXL

Actualizado 6 de diciembre, 2022
Compartir:

Este tutorial explicará cómo exportar datos a archivos Excel en una Aplicación Web Blazor con una presentación atractiva, utilizando la librería IronXL para generar y descargar datos en archivos Excel.

IronXL: Biblioteca Excel C

IronXL es una biblioteca de Excel en C# diseñada para ocuparse de las tareas que más tiempo consumen en Excel, aquellas que se repiten muchas veces. IronXL es lo suficientemente potente como para manejar incluso los problemas más complejos en Excel. Puede trabajar con conjuntos de datos enormes y celdas grandes con facilidad, lo que ha sido una tarea difícil para muchos desarrolladores que utilizan Excel para su trabajo. Esta biblioteca les ayuda a desarrollar aplicaciones que pueden leer y escribir directamente datos de Excel sin necesidad de interactuar con archivos o bibliotecas de Microsoft Office en Windows.

La biblioteca IronXL puede utilizarse para crear diversas hojas de cálculo, como facturas, informes de gastos o informes de ventas. Además, puede ayudar a agilizar el análisis de datos o los procesos de elaboración de informes en su lugar de trabajo automatizando tareas como la fusión de conjuntos de datos complejos. IronXL admite varios formatos de archivo.

La principal característica de IronXL permite a los desarrolladores crear, editar, manipular y leer archivos de Excel sin necesidad de Microsoft Excel. Esto significa que no es necesario instalar Microsoft Excel en su sistema. Esta funcionalidad ofrece diversas posibilidades a los desarrolladores, simplificando la integración de los datos de Excel en las aplicaciones. Por ejemplo, un desarrollador puede generar automáticamente informes a partir de una base de datos y exportarlos a Excel para facilitar su distribución. Para obtener una guía detallada sobre la lectura de archivos Excel en C#, consulte este enlace C# Leer archivo Excel tutorial.

using IronXL;

class Program
{
    static void Main()
    {
        License.LicenseKey = "License-Key;

        //  Cargar un archivo Excel existente
        WorkBook workbook = WorkBook.Load("ExistingData.xlsx");
        WorkSheet sheet = workbook.DefaultWorkSheet;

        //  Por ejemplo, cambiando el valor de las ventas en la celda C2
        if (sheet["C2"].IsEmpty == false)
        {
            double currentSales = sheet["C2"].DoubleValue;
            //  Aumentar las ventas un 10
            sheet["C2"].Value = currentSales * 1.10;
        }

        //  Guardar los cambios en el mismo archivo o en uno nuevo
        workbook.SaveAs("UpdatedData.xlsx");
    }
}
using IronXL;

class Program
{
    static void Main()
    {
        License.LicenseKey = "License-Key;

        //  Cargar un archivo Excel existente
        WorkBook workbook = WorkBook.Load("ExistingData.xlsx");
        WorkSheet sheet = workbook.DefaultWorkSheet;

        //  Por ejemplo, cambiando el valor de las ventas en la celda C2
        if (sheet["C2"].IsEmpty == false)
        {
            double currentSales = sheet["C2"].DoubleValue;
            //  Aumentar las ventas un 10
            sheet["C2"].Value = currentSales * 1.10;
        }

        //  Guardar los cambios en el mismo archivo o en uno nuevo
        workbook.SaveAs("UpdatedData.xlsx");
    }
}
Imports IronXL

Friend Class Program
	Shared Sub Main()
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'		License.LicenseKey = "License-Key; WorkBook workbook = WorkBook.Load("ExistingData.xlsx"); WorkSheet sheet = workbook.DefaultWorkSheet; if (sheet["C2"].IsEmpty == false) { double currentSales = sheet["C2"].DoubleValue; sheet["C2"].Value = currentSales * 1.10; } workbook.SaveAs("UpdatedData.xlsx"); } }
VB   C#

Exportar datos a Excel desde Blazor Project

Sigamos los pasos para crear un archivo Excel desde una Aplicación Web Blazor.

Requisitos previos

Para exportar archivos Excel en una aplicación de servidor Blazor, existen algunos requisitos previos:

  1. Visual Studio (la última versión)
  2. .NET Framework 6 ó 7
  3. Ejecución de la aplicación Blazor Server en Visual Studio
  4. Conexión a Internet estable para instalar la biblioteca IronXL

Instalar la biblioteca IronXL

Ahora, es el momento de instalar la biblioteca IronXL utilizando la consola del gestor de paquetes NuGet. Abra la consola del gestor de paquetes NuGet y escriba el siguiente comando:

Install-Package IronXL.Excel

Este comando instalará la última versión de IronXL en la aplicación.

Código para descargar el archivo Excel exportado

Después de instalar IronXL, cree una carpeta con el nombre "js" en la sección "wwwroot" desde el Explorador de soluciones. En la carpeta "js", cree un archivo JavaScript con el nombre "SaveAsFile.js." como se muestra en la siguiente captura de pantalla.

Cómo Exportar Datos a Excel en Blazor Usando IronXL, Figura 1: Carpeta js

Carpeta js

Ahora, añade el siguiente código en el archivo "SaveAsFile.js". Esta función devolverá los archivos generados a los usuarios como un flujo.

function saveAsFile(filename, byteBase64) {
    var link = document.createElement('a');
    link.download = filename;
    link.href = "data:application/octet-stream;base64," + byteBase64;
    document.body.appendChild(link); //  Necesario para el enlace Firefox
    link.click();
    document.body.removeChild(link);
}
JAVASCRIPT

A continuación, añada la ruta relativa al archivo "SaveAsFile.js" en el archivo "_Host.cshtml". Esto permitirá a la aplicación invocar la función JavaScript previamente definida.

 <script src="~/js/SaveAsFile.js"></script>
 <script src="~/js/SaveAsFile.js"></script>
HTML

Código para exportar un archivo Excel

Cree una clase llamada "ExcelExport.cs" en la carpeta Data.

Cómo Exportar Datos a Excel en Blazor Usando IronXL, Figura 2: ExcelExport.cs

ExcelExport.cs

Escriba el siguiente código para exportar datos en el archivo "ExcelExport.cs".

using IronXL;
using Microsoft.JSInterop;
using System;

namespace Export_Excel_Blazor.Data
{
    public class ExcelExport
    {
        public void ExcelGenerate(IJSRuntime iJSRuntime)
        {
            byte [] fileContents;
            WorkBook xlsxWorkbook = WorkBook.Create(IronXL.ExcelFileFormat.XLSX);
            xlsxWorkbook.Metadata.Author = "IronXL";

            //Añadir una hoja de trabajo en blanco
            WorkSheet xlsxSheet = xlsxWorkbook.CreateWorkSheet("new_sheet");

            //Añadir datos y estilos a la nueva hoja de cálculo

            xlsxSheet ["A1"].Value = "Product EN";
            xlsxSheet ["B1"].Value = "SKU";
            xlsxSheet ["C1"].Value = "Customer";

            xlsxSheet ["A1:C1"].Style.Font.Bold = true;

            xlsxSheet ["A2"].Value = "Iron Rods";
            xlsxSheet ["A3"].Value = "Mobile Phones";
            xlsxSheet ["A4"].Value = "Chargers";

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

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

            fileContents = xlsxWorkbook.ToByteArray();

            iJSRuntime.InvokeAsync<ExcelExport>(
                "saveAsFile",
                "GeneratedExcel.xlsx",
                Convert.ToBase64String(fileContents)
            );
        }
    }
}
using IronXL;
using Microsoft.JSInterop;
using System;

namespace Export_Excel_Blazor.Data
{
    public class ExcelExport
    {
        public void ExcelGenerate(IJSRuntime iJSRuntime)
        {
            byte [] fileContents;
            WorkBook xlsxWorkbook = WorkBook.Create(IronXL.ExcelFileFormat.XLSX);
            xlsxWorkbook.Metadata.Author = "IronXL";

            //Añadir una hoja de trabajo en blanco
            WorkSheet xlsxSheet = xlsxWorkbook.CreateWorkSheet("new_sheet");

            //Añadir datos y estilos a la nueva hoja de cálculo

            xlsxSheet ["A1"].Value = "Product EN";
            xlsxSheet ["B1"].Value = "SKU";
            xlsxSheet ["C1"].Value = "Customer";

            xlsxSheet ["A1:C1"].Style.Font.Bold = true;

            xlsxSheet ["A2"].Value = "Iron Rods";
            xlsxSheet ["A3"].Value = "Mobile Phones";
            xlsxSheet ["A4"].Value = "Chargers";

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

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

            fileContents = xlsxWorkbook.ToByteArray();

            iJSRuntime.InvokeAsync<ExcelExport>(
                "saveAsFile",
                "GeneratedExcel.xlsx",
                Convert.ToBase64String(fileContents)
            );
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

En el ejemplo anterior, la biblioteca IronXL crea un Excel Libro de trabajo en formato XLSX. IronXL también es compatible con el formato XLS. Se necesita un WorkBook para tener un Hoja de trabajo añadido. El siguiente paso es rellenar esta hoja con datos ficticios.

Después de eso, todo el contenido del WorkBook se convierte a la matriz de bytes y IJSRuntime se activa para descargar el archivo con los siguientes parámetros: el nombre de la función JavaScript, el nombre del archivo para el archivo exportado, y la matriz de bytes del WorkBook.

Crear componente Razor

Cree un componente Razor llamado "ExportExcel.razor" en la carpeta Pages.

Cómo exportar datos a Excel en Blazor utilizando IronXL, Figura 3:

ExcelExport.cs

A continuación, sustituya el código fuente de "ExportExcel.razor" por el que se indica a continuación.

@page "/export"
@using Export_Excel_Blazor.Data
@inject IJSRuntime JS

<h1>IronXL Export Excel File</h1>

<p>Intuitive C# & VB.NET Excel API & No need to install MS Office or Excel Interop</p>

<button class="btn btn-primary" @onclick="ExcelGeneration">Create Excel File</button>

@code {

    private void ExcelGeneration()
    {
        ExcelExport excelExport = new ExcelExport();
        excelExport.ExcelGenerate(JS);
    }
}
@page "/export"
@using Export_Excel_Blazor.Data
@inject IJSRuntime JS

<h1>IronXL Export Excel File</h1>

<p>Intuitive C# & VB.NET Excel API & No need to install MS Office or Excel Interop</p>

<button class="btn btn-primary" @onclick="ExcelGeneration">Create Excel File</button>

@code {

    private void ExcelGeneration()
    {
        ExcelExport excelExport = new ExcelExport();
        excelExport.ExcelGenerate(JS);
    }
}
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: @page "/export" using Export_Excel_Blazor.Data inject IJSRuntime JS <h1> IronXL Export Excel File</h1> <p> Intuitive C# & VB.NET Excel API & No need to install MS Office or Excel Interop</p> <button class="btn btn-primary" onclick="ExcelGeneration"> Create Excel File</button> @code
"btn btn-primary" onclick="ExcelGeneration"> Create Excel File</button> code
Private Friend page "/export" [using] Export_Excel_Blazor.Data inject IJSRuntime JS (Of h1) IronXL Export Excel File</h1> (Of p) Intuitive C# & VB.NET Excel API And No need [to] install MS Office [or] Excel Interop</p> <button Class="btn btn-primary" onclick

	Private Sub ExcelGeneration()
		Dim excelExport As New ExcelExport()
		excelExport.ExcelGenerate(JS)
	End Sub
End Class
VB   C#

En el código HTML anterior, cree un botón con una propiedad onclick que apunte a la función ExcelGeneration. A continuación, se añade la función ExcelGeneration dentro de la sección @code con código C# para manejar la función de exportación.

Añadir enlace de navegación

Añada el siguiente fragmento de código en el archivo "NavMenu.razor". Añadirá un menú de barra de navegación para llegar a la página de Generación de Excel.

<li class="nav-item px-3">
    <NavLink class="nav-link" href="export">
        <span class="oi oi-list-rich" aria-hidden="true"></span> Export Excel
    </NavLink>
</li>
<li class="nav-item px-3">
    <NavLink class="nav-link" href="export">
        <span class="oi oi-list-rich" aria-hidden="true"></span> Export Excel
    </NavLink>
</li>
HTML

Proyecto Run

Por último, ejecute el proyecto. Verá el siguiente resultado en el navegador. Vaya al menú naval "Exportar Excel" y haga clic en el botón "Crear archivo Excel".

Cómo exportar datos a Excel en Blazor utilizando IronXL, Figura 4: ExportExcel.razor

ExportExcel.razor

La aplicación exportará los datos a una hoja de cálculo Excel y descargará el archivo XLSX en su máquina.

Cómo exportar datos a Excel en Blazor utilizando IronXL, Figura 5: Descargar Excel

Descargar Excel

Hoja de cálculo Excel generada

Esta es la vista previa del archivo Excel generado.

Cómo exportar datos a Excel en Blazor utilizando IronXL, Figura 6: Excel generado

Excel generado

Resumen

Este artículo recorrió el proceso de generación y exportación de archivos Excel en la aplicación Blazor utilizando IronXL. IronXL es una gran herramienta para desarrolladores .NET que tienen que manipular archivos Excel en el software sin instalar Microsoft Office en la máquina. IronXL proporciona una forma mucho más rápida de construir archivos de Excel en .NET.

IronXL se basa en el lenguaje C# y proporciona un desarrollo de código rápido y sencillo para crear interfaces de usuario interactivas y con gran capacidad de respuesta en la aplicación de hojas de cálculo más popular del mundo. Microsoft Interop es una biblioteca relativamente más lenta que requiere una codificación más compleja. Microsoft Interop es más lento que IronXL porque requiere el uso de COM para leer y escribir datos. Ver más artículos relacionados con IronXL en cómo exportar archivos ExcelControla la forma en que se muestran las celdas en un libro de Excel con cuadrículas gestión de gráficos y alineación del texto, tamaño de letra, color.

< ANTERIOR
Tutorial de C# CSV Parser (Paso a Paso)
SIGUIENTE >
Cómo generar un archivo Excel en Razor Pages

¿Listo para empezar? Versión: 2024.7 recién publicada

Descarga gratuita de NuGet Descargas totales: 897,936 Ver licencias >
123