Blazor Lire un fichier Excel en C# à l'aide d'IronXL (exemple de tutoriel)
Introduction
Blazor est un Framework .NET Web open-source créé par Microsoft. Une application Blazor fonctionne en compilant le code C# en JavaScript et HTML compatibles avec le navigateur. Dans ce tutoriel, je vais partager mes connaissances sur la méthode la plus simple et la plus efficace pour lire des documents/feuilles de travail Excel dans une application côté serveur Blazor en utilisant la bibliothèque IronXL C#.
Comment lire un fichier Excel dans Blazor
- Installer une bibliothèque C# pour lire un fichier Excel dans Blazor
- Créer un bouton de téléchargement de fichiers sur votre application Blazor
- Utiliser la bibliothèque C# pour lire un fichier Excel à partir du disque
- Configurer l'application Blazor pour afficher les données lues dans un tableau sur la fenêtre
Commencez avec IronXL
Commencez à utiliser IronXL dans votre projet dès aujourd'hui avec un essai gratuit.
Étape 1 - Créer un projet Blazor dans Visual Studio
Je dispose d'un fichier XLSX contenant les données suivantes que je vais lire et ouvrir dans l'application Blazor Server :
Entrée XLSX Feuille Excel | Résultat dans le navigateur Blazor Server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Commencez par créer un projet Blazor à partir de l'IDE Visual Studio :
Choisissez le type de projet Blazor Server App
:
Lancez l'application sans changer la solution avec la touche F5
. Naviguez vers l'onglet Fetch data
de l'application comme suit :
Notre objectif est de charger un fichier Excel dans l'application Blazor à l'aide d'un bouton de téléchargement, puis de l'afficher sur cette page.
Étape 2 - Ajouter IronXL à votre solution
IronXL for .NET Excel Library (Instructions d'installation) :
IronXL est une bibliothèque .NET qui permet de traiter la feuille de calcul de Microsoft Excel comme un objet, ce qui permet au développeur d'utiliser toute la puissance de C# et du Framework .NET pour manipuler les flux de données. En tant que développeur, nous souhaitons disposer d'un moyen efficace pour récupérer toutes les cellules des lignes et les informations des colonnes du document/de la feuille de calcul Excel dans nos applications ou notre base de données.
Avec IronXL, il est possible d'obtenir toutes sortes d'informations à partir d'une feuille de calcul, telles que les valeurs des cellules, le contenu des cellules, les images, les références et le formatage. IronXL est meilleur que le NPOI à de nombreux égards. IronXL offre davantage de fonctions et peut faciliter l'écriture d'une logique complexe. Il dispose également de licences plus avantageuses et l'équipe d'assistance est plus compétente.
IronXL for .NET prend en charge toutes les dernières versions de .NET(8, 7 et 6) et .NET Core Framework 4.6.2+.
Ajoutez IronXL à votre solution en utilisant l'une des méthodes ci-dessous, puis construisez la solution.
Option 2A - Utiliser le gestionnaire de paquets NuGet
Install-Package IronXL.Excel
Option 2B - Ajouter PackageReference dans le fichier csproj
Vous pouvez ajouter IronXL directement à votre projet en ajoutant la ligne suivante à n'importe quel <ItemGroup>
dans le fichier .csproj
de votre solution :
<PackageReference Include="IronXL.Excel" Version="*" />
Comme indiqué ici dans Visual Studio :
Étape 3 - Codage du téléchargement et de la visualisation des fichiers
Dans le Visual Studio Solution View, allez dans le dossier Pages/
et trouvez le fichier FetchData.razor
. Vous pouvez utiliser n'importe quel autre fichier razor, mais nous utiliserons celui-ci parce qu'il est fourni avec le modèle d'application du serveur Blazor.
Remplacez le contenu du fichier replace par le code suivant :
@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());
' }
' }
'}
Résumé
Le <InputFile>le composant
vous permettra de télécharger un fichier sur cette page web. Et nous avons défini le callback de l'événement invoqué pour appeler OpenExcelFileFromDisk
qui est la méthode asynchrone dans le bloc @code
en bas. Le HTML rendra votre feuille Excel sous forme de tableau dans l'onglet.
IronXL.Excel est une bibliothèque logicielle .NET unique pour la lecture d'une grande variété de formats de feuilles de calcul. Il ne nécessite pasMicrosoft Excel et ne dépend pas d'Interop.
Pour en savoir plus
Voir la référence de l'API
Explorez la référence API d'IronXL, qui décrit en détail toutes les fonctionnalités, les espaces de noms, les classes, les méthodes, les champs et les énums d'IronXL.
Voir la référence de l'APITélécharger le produit logiciel.