Comment lire un fichier Excel dans Blazor en utilisant C#

Lecture d'un fichier Excel en C# avec Blazor et IronXL (Tutoriel d'exemple)

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

Introduction

Blazor est un framework web .NET open source créé par Microsoft. Une application Blazor fonctionne en compilant le code C# en JavaScript et HTML compatibles avec les navigateurs. Dans ce tutoriel, je partagerai des connaissances sur la méthode la plus simple et la plus efficace pour lire des documents/feuilles de calcul Excel dans une application serveur Blazor utilisant la bibliothèque IronXL C#.

Demonstration of IronXL Viewing Excel in Blazor

Commencez avec IronXL

!!!--LIBRARY_START_TRIAL_BLOCK-- !!!


É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 serveur Blazor :

Fichier Excel XLSX d'entrée Résultat dans le navigateur du serveur Blazor
Prénom Nom de famille IDENTIFIANT
John Applesmith 1
Richard Forgeron 2
Sherry Rouges-gorges 3
Browser View related to Étape 1 - Créer un projet Blazor dans Visual Studio

Commencez par créer un projet Blazor à partir de l'IDENTIFIANTE 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 modifier la solution à l'aide de la touche F5 . Accédez à 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 sera de charger notre fichier Excel dans l'application Blazor à l'aide d'un bouton de téléchargement, puis de l'afficher sur cette page.

Étape 2 - Ajoutez IronXL à votre solution

IronXL : Bibliothèque Excel .NET (Instructions d'installation) :

IronXL est une bibliothèque .NET qui permet de traiter la feuille de calcul Microsoft Excel comme un objet, permettant ainsi 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éveloppeurs, nous recherchons une méthode simple pour récupérer les informations de chaque ligne, cellule et colonne des documents/feuilles de calcul Excel et les intégrer à nos applications ou bases 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 la mise en forme. IronXL est supérieur à NPOI à bien des égards. IronXL offre davantage de fonctionnalités et peut simplifier l'écriture de logique complexe. Elle propose également des licences plus avantageuses et son équipe d'assistance est plus compétente.

IronXL 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 compilez la solution.

Option 2A - Utiliser le gestionnaire de packages NuGet

Install-Package IronXL.Excel

Option 2B - Ajouter une référence au package 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="*" />
<PackageReference Include="IronXL.Excel" Version="*" />
XML

Comme le montre ce résultat dans Visual Studio :

Add Ironxl Csproj related to Option 2B - Ajouter une référence au package dans le fichier csproj

Étape 3 - Codage du chargement et de l'affichage des fichiers

Dans l'explorateur de solutions de Visual Studio, accédez au dossier Pages/ et recherchez le fichier FetchData.razor . Vous pouvez utiliser n'importe quel autre fichier Razor, mais nous utiliserons celui-ci car il est fourni avec le modèle d'application Blazor Server.

Remplacez le contenu du fichier 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 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

Résumé

Le<InputFile> Ce composant vous permet de télécharger un fichier sur cette page web. Nous avons configuré le rappel d'événement invoqué pour appeler OpenExcelFileFromDisk , qui est la méthode asynchrone dans le bloc @code en bas. Le code HTML affichera votre feuille Excel sous forme de tableau dans l'onglet.

IronXL.Excel est une bibliothèque logicielle .NET autonome permettant de lire une grande variété de formats de feuilles de calcul. Il ne nécessite pas l'installation de Microsoft Excel et n'est pas dépendant d'Interop.


Lectures complémentaires

Documentation related to Lectures complémentaires

Voir la référence API

Explorez la documentation de référence de l'API pour IronXL, qui décrit en détail toutes les fonctionnalités, espaces de noms, classes, méthodes, champs et énumérations d'IronXL.

Voir la référence API

Téléchargez le logiciel.

Questions Fréquemment Posées

Comment puis-je lire des fichiers Excel dans une application Blazor côté serveur ?

Pour lire des fichiers Excel dans une application Blazor côté serveur, vous pouvez utiliser la bibliothèque C# IronXL. Elle vous permet de l'intégrer facilement à votre projet Blazor en utilisant le gestionnaire de packages NuGet pour installer la bibliothèque, puis en implémentant le code pour lire et afficher les données Excel.

Quelles sont les étapes pour configurer un projet Blazor pour lire des fichiers Excel ?

Tout d'abord, installez IronXL via le gestionnaire de packages NuGet. Ensuite, créez un bouton de téléchargement de fichier dans votre application Blazor. Utilisez IronXL pour lire le fichier Excel téléchargé et configurez l'application pour afficher les données dans un tableau à l'aide de composants Razor.

Est-il possible de lire des fichiers Excel dans une application Blazor sans Excel installé ?

Oui, avec IronXL, vous pouvez lire et manipuler des fichiers Excel dans une application Blazor sans avoir Microsoft Excel installé sur votre système.

Comment puis-je afficher des données Excel dans une application Blazor ?

Après avoir lu le fichier Excel avec IronXL, vous pouvez utiliser des composants Razor dans votre application Blazor pour afficher les données sous forme de tableau, améliorant ainsi l'interface utilisateur.

Quels avantages IronXL offre-t-il par rapport aux autres bibliothèques Excel ?

IronXL offre une fonctionnalité étendue, une facilité de gestion de la logique complexe, des conditions de licence supérieures, et un support dédié, ce qui en fait un choix préférable par rapport à des alternatives comme NPOI.

Quelles versions de .NET sont prises en charge par IronXL pour la manipulation Excel ?

IronXL prend en charge toutes les dernières versions de .NET, y compris 8, 7 et 6, ainsi que le Framework .NET Core 4.6.2+, garantissant une large compatibilité avec les applications modernes.

Comment intégrer une bibliothèque Excel dans mon projet Blazor ?

Vous pouvez intégrer une bibliothèque Excel comme IronXL dans votre projet Blazor en utilisant le gestionnaire de packages NuGet avec la commande dotnet add package IronXL.Excel ou en ajoutant un PackageReference dans le fichier .csproj.

Quelles étapes de dépannage puis-je suivre si mon application Blazor échoue à lire un fichier Excel ?

Assurez-vous qu'IronXL est correctement installé via NuGet et que votre application Blazor dispose des autorisations nécessaires pour lire des fichiers depuis le disque. Vérifiez que le chemin du fichier Excel est correct et que le format du fichier est pris en charge par IronXL.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Prêt à commencer?
Nuget Téléchargements 1,738,553 | Version: 2025.11 vient de sortir