Comment lire un fichier Excel dans Blazor en utilisant C#

Blazor Read Excel File in C# Using IronXL (Example Tutorial)

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

Introduction

Blazor is an open-source .NET Web framework that was created by Microsoft. A Blazor application works by compiling the C# code into browser-compliant JavaScript and HTML. In this tutorial, I'll share knowledge about the best and easy method for reading Excel documents/worksheets in a Blazor server-side application using the IronXL C# library.

Demonstration of IronXL Viewing Excel in Blazor

Get started with IronXL

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

Première étape :
green arrow pointer


Step 1 - Create a Blazor Project in Visual Studio

I have an XLSX file containing the following data that I will read into and open in the Blazor Server App:

Input XLSX Excel Sheet Result in Blazor Server Browser
First name Last name ID
John Applesmith 1
Richard Smith 2
Sherry Robins 3
Browser View related to Step 1 - Create a Blazor Project in Visual Studio

Start off by creating a Blazor Project from the Visual Studio IDE:

New Project related to Step 1 - Create a Blazor Project in Visual Studio

Choose the Blazor Server App Project type:

Choose Blazor Project Type related to Step 1 - Create a Blazor Project in Visual Studio

Go ahead and run the Application without changing the solution with the F5 key. Navigate to the Fetch data tab of the Application like so:

First Run related to Step 1 - Create a Blazor Project in Visual Studio

Our goal will be to load our Excel file into the Blazor app with an upload button and then display it on this page.

Step 2 - Add IronXL to your Solution

IronXL: .NET Excel Library (Installation Instructions):

IronXL is a .NET library that allows you to treat the spreadsheet in Microsoft Excel like an object, enabling the developer to use the full power of C# and the .NET Framework to manipulate data streams. As a developer, we want a nice way through which we can get every row's cells and column information from Excel documents/worksheets into our applications or databases.

With IronXL, it is possible to get all sorts of information from a worksheet such as cell values, content of cells, images, references, and formatting. IronXL is better than NPOI in many aspects. IronXL provides more functions and can make writing complex logic easier. It also has more preferable licenses and the support team is more competent.

IronXL supports all the latest versions of .NET (8, 7, and 6) and .NET Core Framework 4.6.2+.

Add IronXL to your solution using one of the methods below then build the solution.

Option 2A - Use NuGet Package Manager

Install-Package IronXL.Excel

Option 2B - Add PackageReference in the csproj file

You can add IronXL directly to your project by adding the following line to any <ItemGroup> in the .csproj file of your solution:

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

As shown here in Visual Studio:

Add Ironxl Csproj related to Option 2B - Add PackageReference in the csproj file

Step 3 - Coding the File Upload and View

In the Visual Studio Solution View, go to the Pages/ folder and find the FetchData.razor file. You may use any other razor file but we will use this one because it comes with the Blazor Server App Template.

Replace the file contents with the following code:

@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

Summary

The <InputFile> component allows you to upload a file on this webpage. We have set the invoked event callback to call OpenExcelFileFromDisk, which is the async method in the @code block at the bottom. The HTML will render your Excel sheet as a table on the tab.

IronXL.Excel is a standalone .NET software library for reading a wide variety of spreadsheet formats. It does not require Microsoft Excel to be installed, and is not dependent on Interop.


Further Reading

Documentation related to Further Reading

View the API Reference

Explore the API Reference for IronXL, outlining the details of all of IronXL’s features, namespaces, classes, methods fields and enums.

View the API Reference

Download the software product.

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,686,155 | Version : 2025.11 vient de sortir