Blazor Leer Archivo Excel en C# Usando IronXL (Ejemplo Tutorial)

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

Introducción

Blazor es un framework web .NET de código abierto creado por Microsoft. Una aplicación Blazor funciona compilando el código C# en JavaScript y HTML compatibles con el navegador. En este tutorial, voy a compartir conocimientos sobre el método mejor y más fácil para la lectura de documentos de Excel / hojas de trabajo en Blazor aplicación del lado del servidor utilizando la biblioteca IronXL C #.

Demostración de IronXL Visualización de Excel en Blazor

Comienza con IronXL

Comience a usar IronXL en su proyecto hoy con una prueba gratuita.

Primer Paso:
green arrow pointer


Paso 1 - Crear un proyecto Blazor en Visual Studio

Tengo un archivo XLSX que contiene los siguientes datos que voy a leer y abrir en el Blazor Server App:

Entrada XLSX Hoja ExcelResultado en el navegador del servidor Blazor
NombreApellidoID
JohnApplesmith
RichardSmith
SherryRobins
Browser View related to Paso 1 - Crear un proyecto Blazor en Visual Studio

Empieza creando un proyecto Blazor desde el IDE de Visual Studio:

New Project related to Paso 1 - Crear un proyecto Blazor en Visual Studio

Elija el tipo de proyecto Blazor Server App:

Choose Blazor Project Type related to Paso 1 - Crear un proyecto Blazor en Visual Studio

Ejecute la Aplicación sin cambiar la solución con la tecla F5. Navega a la pestaña Fetch data de la Aplicación así:

First Run related to Paso 1 - Crear un proyecto Blazor en Visual Studio

Nuestro objetivo será cargar el archivo Excel en la aplicación Blazor con un botón de carga y luego mostrarlo en esta página.

Paso 2: Añada IronXL a su solución

IronXL: Biblioteca .NET Excel(Instrucciones de instalación):

IronXL es una biblioteca .NET que permite tratar la hoja de cálculo de Microsoft Excel como un objeto, lo que permite al desarrollador utilizar toda la potencia de C# y .NET Framework para manipular el flujo de datos. Como desarrollador, queremos una manera agradable a través del cual podemos obtener todas las celdas de fila y la información de la columna del documento de Excel / hoja de cálculo en nuestras aplicaciones o base de datos.

Con IronXL, es posible obtener todo tipo de información de una hoja de cálculo, como valores de celdas, contenido de celdas, imágenes, referencias y formato. IronXL es mejor que NPOI en muchos aspectos. IronXL proporciona más funciones y puede facilitar la escritura de lógica compleja. También tiene licencias más preferibles y el equipo de asistencia es más competente.

IronXL es compatible con las últimas versiones de .NET(8, 7 y 6) y .NET Core Framework 4.6.2+.

Añada IronXL a su solución utilizando uno de los métodos siguientes y, a continuación, cree la solución.

Opción 2A - Utilizar el gestor de paquetes NuGet

Install-Package IronXL.Excel

Opción 2B - Añadir PackageReference en el archivo csproj

Puedes añadir IronXL directamente a tu proyecto añadiendo la siguiente línea a cualquier <ItemGroup>en el archivo.csproj` de su solución:

<PackageReference Include="IronXL.Excel" Version="*" />
XML

Como se muestra aquí en Visual Studio:

Add Ironxl Csproj related to Opción 2B - Añadir PackageReference en el archivo csproj

Paso 3 - Codificación de la carga y visualización de archivos

En la vista de solución de Visual Studio, vaya a la carpeta Pages/ y busque el archivo FetchData.razor. Puedes usar cualquier otro archivo razor pero nosotros usaremos este porque viene con la plantilla Blazor Server App Template.

Sustituye el contenido del archivo replace por el siguiente código:

@using IronXL;
@using System.Data;

@page "/fetchdata"

<PageTitle>Excel File Viewer</PageTitle>

<h1>Open Excel File to View</h1>

<InputFile OnChange="@OpenExcelFileFromDisk" />

<table>
    <thead>
        <tr>
            @foreach (DataColumn column in displayDataTable.Columns)
            {
                <th>
                    @column.ColumnName
                </th>
            }
        </tr>
    </thead>
    <tbody>
        @foreach (DataRow row in displayDataTable.Rows)
        {
            <tr>
                @foreach (DataColumn column in displayDataTable.Columns)
                {
                    <td>
                        @row [column.ColumnName].ToString()
                    </td>
                }
            </tr>
        }
    </tbody>
</table>

@code {
    // Create a DataTable
    private DataTable displayDataTable = new DataTable();

    // When a file is uploaded to the App using the InputFile, trigger:
    async Task OpenExcelFileFromDisk(InputFileChangeEventArgs e)
    {
        IronXL.License.LicenseKey = "PASTE TRIAL OR LICENSE KEY";

        // Open the File to a MemoryStream object
        MemoryStream ms = new MemoryStream();

        await e.File.OpenReadStream().CopyToAsync(ms);
        ms.Position = 0;

        // Define variables for IronXL
        WorkBook loadedWorkBook = WorkBook.FromStream(ms);
        WorkSheet loadedWorkSheet = loadedWorkBook.DefaultWorkSheet; // Or use .GetWorkSheet()

        // Add header Columns to the DataTable
        RangeRow headerRow = loadedWorkSheet.GetRow(0);
        for (int col = 0 ; col < loadedWorkSheet.ColumnCount ; col++)
        {
            displayDataTable.Columns.Add(headerRow.ElementAt(col).ToString());
        }

        // Populate the DataTable
        for (int row = 1 ; row < loadedWorkSheet.RowCount ; row++)
        {
            IEnumerable<string> excelRow = loadedWorkSheet.GetRow(row).ToArray().Select(c => c.ToString());
            displayDataTable.Rows.Add(excelRow.ToArray());
        }
    }
}
@using IronXL;
@using System.Data;

@page "/fetchdata"

<PageTitle>Excel File Viewer</PageTitle>

<h1>Open Excel File to View</h1>

<InputFile OnChange="@OpenExcelFileFromDisk" />

<table>
    <thead>
        <tr>
            @foreach (DataColumn column in displayDataTable.Columns)
            {
                <th>
                    @column.ColumnName
                </th>
            }
        </tr>
    </thead>
    <tbody>
        @foreach (DataRow row in displayDataTable.Rows)
        {
            <tr>
                @foreach (DataColumn column in displayDataTable.Columns)
                {
                    <td>
                        @row [column.ColumnName].ToString()
                    </td>
                }
            </tr>
        }
    </tbody>
</table>

@code {
    // Create a DataTable
    private DataTable displayDataTable = new DataTable();

    // When a file is uploaded to the App using the InputFile, trigger:
    async Task OpenExcelFileFromDisk(InputFileChangeEventArgs e)
    {
        IronXL.License.LicenseKey = "PASTE TRIAL OR LICENSE KEY";

        // Open the File to a MemoryStream object
        MemoryStream ms = new MemoryStream();

        await e.File.OpenReadStream().CopyToAsync(ms);
        ms.Position = 0;

        // Define variables for IronXL
        WorkBook loadedWorkBook = WorkBook.FromStream(ms);
        WorkSheet loadedWorkSheet = loadedWorkBook.DefaultWorkSheet; // Or use .GetWorkSheet()

        // Add header Columns to the DataTable
        RangeRow headerRow = loadedWorkSheet.GetRow(0);
        for (int col = 0 ; col < loadedWorkSheet.ColumnCount ; col++)
        {
            displayDataTable.Columns.Add(headerRow.ElementAt(col).ToString());
        }

        // Populate the DataTable
        for (int row = 1 ; row < loadedWorkSheet.RowCount ; row++)
        {
            IEnumerable<string> excelRow = loadedWorkSheet.GetRow(row).ToArray().Select(c => c.ToString());
            displayDataTable.Rows.Add(excelRow.ToArray());
        }
    }
}
Private IronXL As [using]
Private System As [using]

'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'@page "/fetchdata" (Of PageTitle) Excel File Viewer</PageTitle> (Of h1) Open Excel File @to View</h1> <InputFile OnChange="@OpenExcelFileFromDisk" /> (Of table) (Of thead) (Of tr) @foreach(DataColumn column in displayDataTable.Columns)
'			{
'				<th> @column.ColumnName </th>
'			}
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'		</tr> </thead> (Of tbody) @foreach(DataRow row in displayDataTable.Rows)
'		{
'			<tr> @foreach(DataColumn column in displayDataTable.Columns)
'				{
'					<td> @row [column.ColumnName].ToString() </td>
'				}
'			</tr>
'		}
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'	</tbody> </table> @code
'	{
'	' Create a DataTable
'	private DataTable displayDataTable = New DataTable();
'
'	' When a file is uploaded to the App using the InputFile, trigger:
'	async Task OpenExcelFileFromDisk(InputFileChangeEventArgs e)
'	{
'		IronXL.License.LicenseKey = "PASTE TRIAL OR LICENSE KEY";
'
'		' Open the File to a MemoryStream object
'		MemoryStream ms = New MemoryStream();
'
'		await e.File.OpenReadStream().CopyToAsync(ms);
'		ms.Position = 0;
'
'		' Define variables for IronXL
'		WorkBook loadedWorkBook = WorkBook.FromStream(ms);
'		WorkSheet loadedWorkSheet = loadedWorkBook.DefaultWorkSheet; ' Or use .GetWorkSheet()
'
'		' Add header Columns to the DataTable
'		RangeRow headerRow = loadedWorkSheet.GetRow(0);
'		for (int col = 0 ; col < loadedWorkSheet.ColumnCount ; col++)
'		{
'			displayDataTable.Columns.Add(headerRow.ElementAt(col).ToString());
'		}
'
'		' Populate the DataTable
'		for (int row = 1 ; row < loadedWorkSheet.RowCount ; row++)
'		{
'			IEnumerable<string> excelRow = loadedWorkSheet.GetRow(row).ToArray().@Select(c => c.ToString());
'			displayDataTable.Rows.Add(excelRow.ToArray());
'		}
'	}
'}
VB   C#

Resumen

El <InputFile>El componente le permitirá cargar un archivo en esta página web. Y hemos establecido el callback del evento invocado para llamar a OpenExcelFileFromDisk que es el método async en el bloque @code en la parte inferior. El HTML mostrará su hoja Excel como una tabla en la pestaña.

IronXL.Excel es solo .NET biblioteca de software para la lectura de una amplia variedad de formatos de hoja de cálculo. No requiereMicrosoft Excel y no depende de Interop.


Lecturas complementarias

Documentation related to Lecturas complementarias

Ver la referencia de la API

Explore la Referencia de la API para IronXL, que describe los detalles de todas las características, espacios de nombres, clases, métodos, campos y enums de IronXL.

Ver la referencia de la API

Descargar el producto de software.