Blazor Leer Archivo Excel en C# Usando IronXL (Ejemplo Tutorial)
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 #.
Cómo leer archivos Excel en Blazor
- Instalar biblioteca C# para leer archivo Excel en Blazor
- Crear un botón de carga de archivos en su aplicación Blazor
- Utilizar la biblioteca C# para leer archivos Excel del disco
- Configurar la aplicación Blazor para que muestre los datos leídos en una tabla en la ventana
Comienza con IronXL
Comience a usar IronXL en su proyecto hoy con una prueba gratuita.
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 Excel | Resultado en el navegador del servidor Blazor | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Empieza creando un proyecto Blazor desde el IDE de Visual Studio:
Elija el tipo de proyecto Blazor Server App
:
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í:
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="*" />
Como se muestra aquí en Visual Studio:
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());
' }
' }
'}
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
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 APIDescargar el producto de software.