Blazor Lire un fichier Excel en C# à l'aide d'IronXL (exemple de tutoriel)

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

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#.

Démonstration de l'affichage d'Excel par IronXL dans Blazor

Commencez avec IronXL

Commencez à utiliser IronXL dans votre projet dès aujourd'hui avec un essai gratuit.

Première étape :
green arrow pointer


É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 ExcelRésultat dans le navigateur Blazor Server
PrénomNom de familleID
JeanPommes de terre
RichardSmith
SherryRobins
Browser View related to Étape 1 - Créer un projet Blazor dans Visual Studio

Commencez par créer un projet Blazor à partir de l'IDE Visual Studio :

New Project related to Étape 1 - Créer un projet Blazor dans Visual Studio

Choisissez le type de projet Blazor Server App :

Choose Blazor Project Type related to Étape 1 - Créer un projet Blazor dans Visual Studio

Lancez l'application sans changer la solution avec la touche F5. Naviguez vers l'onglet Fetch data de l'application comme suit :

First Run related to Étape 1 - Créer un projet Blazor dans Visual Studio

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="*" />
XML

Comme indiqué ici dans Visual Studio :

Add Ironxl Csproj related to Option 2B - Ajouter PackageReference dans le fichier csproj

É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());
'		}
'	}
'}
VB   C#

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

Documentation related to 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'API

Télécharger le produit logiciel.