Cómo leer un archivo de Excel en Blazor usando C#

Blazor: Lee un archivo de Excel en C# con IronXL (tutorial de ejemplo)

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

Introducción

Blazor es un marco web de código abierto de .NET que fue creado por Microsoft. Una aplicación de Blazor funciona compilando el código C# en JavaScript y HTML compatibles con el navegador. En este tutorial, compartiré conocimiento sobre el mejor y más fácil método para leer documentos/hojas de Excel en una aplicación del lado del servidor Blazor usando la biblioteca IronXL de C#.

Demonstration of IronXL Viewing Excel in Blazor

Comience a utilizar IronXL

!!!--BLOQUE DE PRUEBA DE INICIO DE BIBLIOTECA--!!!


Paso 1: Crear un proyecto Blazor en Visual Studio

Tengo un archivo XLSX que contiene los siguientes datos que leeré y abriré en la Aplicación de Servidor Blazor:

Hoja de Excel de entrada XLSX Resultado en el navegador del servidor Blazor
Nombre Apellido IDENTIFICACIÓN
John Applesmith 1
Ricardo Herrero 2
Jerez Petirrojos 3
Browser View related to Paso 1: Crear un proyecto Blazor en Visual Studio

Comience creando un Proyecto Blazor desde el IDENTIFICACIÓNE 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

Siga adelante y ejecute la Aplicación sin cambiar la solución con la tecla F5. Navegue a la pestaña Fetch data de la Aplicación de esta manera:

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

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

Paso 2: Agregue IronXL a su solución

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

IronXL es una biblioteca de .NET que le permite tratar la hoja de cálculo en Microsoft Excel como un objeto, lo que permite al desarrollador utilizar el completo poder de C# y el marco .NET para manipular flujos de datos. Como desarrolladores, queremos una forma cómoda mediante la cual podamos obtener la información de celdas y columnas de cada fila de los documentos/hojas de Excel en nuestras aplicaciones o bases de datos.

Con IronXL, es posible obtener todo tipo de información de una hoja de cálculo, como los valores de las celdas, contenido de las celdas, imágenes, referencias y formato. IronXL es mejor que NPOI en muchos aspectos. IronXL proporciona más funciones y puede hacer que escribir lógica compleja sea más fácil. También tiene licencias más favorables y el equipo de soporte es más competente.

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

Añada IronXL a su solución usando uno de los métodos a continuación, luego compile la solución.

Opción 2A: Utilizar el Administrador de paquetes NuGet

Install-Package IronXL.Excel

Opción 2B - Agregar PackageReference en el archivo csproj

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

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

Como se muestra aquí en Visual Studio:

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

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

En la Vista de Soluciones de Visual Studio, vaya a la carpeta Pages/ y encuentre el archivo FetchData.razor. Puede usar cualquier otro archivo razor, pero usaremos este porque viene con la Plantilla de Aplicación de Servidor Blazor.

Reemplace el contenido del archivo con 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 instance
    private DataTable displayDataTable = new DataTable();

    // This method is triggered when a file is uploaded
    async Task OpenExcelFileFromDisk(InputFileChangeEventArgs e)
    {
        IronXL.License.LicenseKey = "PASTE TRIAL OR LICENSE KEY";

        // Load the uploaded file into a MemoryStream
        MemoryStream ms = new MemoryStream();

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

        // Create an IronXL workbook from the MemoryStream
        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 with data from the Excel sheet
        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 instance
    private DataTable displayDataTable = new DataTable();

    // This method is triggered when a file is uploaded
    async Task OpenExcelFileFromDisk(InputFileChangeEventArgs e)
    {
        IronXL.License.LicenseKey = "PASTE TRIAL OR LICENSE KEY";

        // Load the uploaded file into a MemoryStream
        MemoryStream ms = new MemoryStream();

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

        // Create an IronXL workbook from the MemoryStream
        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 with data from the Excel sheet
        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 instance
'	private DataTable displayDataTable = New DataTable();
'
'	' This method is triggered when a file is uploaded
'	async Task OpenExcelFileFromDisk(InputFileChangeEventArgs e)
'	{
'		IronXL.License.LicenseKey = "PASTE TRIAL OR LICENSE KEY";
'
'		' Load the uploaded file into a MemoryStream
'		MemoryStream ms = New MemoryStream();
'
'		await e.File.OpenReadStream().CopyToAsync(ms);
'		ms.Position = 0;
'
'		' Create an IronXL workbook from the MemoryStream
'		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 with data from the Excel sheet
'		for (int row = 1; row < loadedWorkSheet.RowCount; row++)
'		{
'			IEnumerable<string> excelRow = loadedWorkSheet.GetRow(row).ToArray().@Select(c => c.ToString());
'			displayDataTable.Rows.Add(excelRow.ToArray());
'		}
'	}
'}
$vbLabelText   $csharpLabel

Resumen

El componente <InputFile> le permite cargar un archivo en esta página web. Hemos configurado que el evento invocado llame a OpenExcelFileFromDisk, que es el método async en el bloque @code al final. El HTML renderizará su hoja de Excel como una tabla en la pestaña.

IronXL.Excel es una biblioteca de software .NET autónoma para leer una amplia variedad de formatos de hojas de cálculo. No requiere Microsoft Excel estar instalado, y no depende de Interop.


Lectura Adicional

Documentation related to Lectura Adicional

Ver la referencia de la API

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

Ver la referencia de la API

Descargue el producto de software.

Preguntas Frecuentes

¿Cómo puedo leer archivos de Excel en una aplicación del lado del servidor Blazor?

Para leer archivos de Excel en una aplicación del lado del servidor Blazor, puede usar la biblioteca de C# IronXL. Le permite integrarse fácilmente con su proyecto Blazor utilizando el Administrador de Paquetes NuGet para instalar la biblioteca y luego implementar el código para leer y mostrar los datos de Excel.

¿Cuáles son los pasos para configurar un proyecto Blazor para leer archivos de Excel?

Primero, instale IronXL a través del Administrador de Paquetes NuGet. Luego, cree un botón de carga de archivos en su aplicación Blazor. Use IronXL para leer el archivo de Excel cargado y configure la aplicación para mostrar los datos en una tabla utilizando componentes Razor.

¿Es posible leer archivos de Excel en una aplicación Blazor sin tener Excel instalado?

Sí, con IronXL, puede leer y manipular archivos de Excel en una aplicación Blazor sin tener Microsoft Excel instalado en su sistema.

¿Cómo puedo mostrar datos de Excel en una aplicación Blazor?

Después de leer el archivo de Excel usando IronXL, puede usar componentes Razor en su aplicación Blazor para mostrar los datos en formato de tabla, mejorando la interfaz de usuario.

¿Qué beneficios ofrece IronXL sobre otras bibliotecas de Excel?

IronXL proporciona una amplia funcionalidad, facilidad para manejar lógica compleja, términos de licencia superiores, y soporte dedicado, lo que lo convierte en una opción preferible sobre alternativas como NPOI.

¿Qué versiones de .NET son compatibles con IronXL para la manipulación de Excel?

IronXL es compatible con todas las versiones más recientes de .NET, incluyendo 8, 7 y 6, así como el Marco de .NET Core 4.6.2+, asegurando una amplia compatibilidad con aplicaciones modernas.

¿Cómo integro una biblioteca de Excel en mi proyecto Blazor?

Puede integrar una biblioteca de Excel como IronXL en su proyecto Blazor utilizando el Administrador de Paquetes NuGet con el comando dotnet add package IronXL.Excel o agregando una PackageReference en el archivo .csproj.

¿Qué pasos de solución de problemas puedo tomar si mi aplicación Blazor no lee un archivo de Excel?

Asegúrese de que IronXL esté correctamente instalado a través de NuGet y que su aplicación Blazor tenga los permisos necesarios para leer archivos desde el disco. Verifique que la ruta del archivo de Excel sea correcta y que el formato de archivo sea compatible con IronXL.

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
¿Listo para empezar?
Nuget Descargas 1,738,553 | Version: 2025.11 recién lanzado