Blazor Excel-Datei in C# mit IronXL lesen (Beispieltutorial)
Einführung
Blazor ist ein quelloffenes .NET-Web-Framework, das von Microsoft entwickelt wurde. Eine Blazor-Anwendung funktioniert durch Kompilieren des C#-Codes in Browser-kompatibles JavaScript und HTML. In diesem Tutorial teile ich mein Wissen über die beste und einfachste Methode zum Lesen von Excel-Dokumenten/Arbeitsblättern in einer serverseitigen Blazor-Anwendung unter Verwendung der IronXL C#-Bibliothek.

Wie man Excel-Dateien in Blazor liest
- Install C# library to read Excel file in Blazor
- Erstellen Sie eine Schaltfläche zum Hochladen von Dateien in Ihrer Blazor-Anwendung
- C#-Bibliothek zum Lesen von Excel-Dateien von der Festplatte verwenden
- Konfigurieren Sie die Blazor-App so, dass die gelesenen Daten in einer Tabelle im Fenster angezeigt werden
Legen Sie los mit IronXL
Beginnen Sie noch heute mit der Verwendung von IronXL in Ihrem Projekt mit einer kostenlosen Testversion.
Schritt 1 - Erstellen eines Blazor-Projekts in Visual Studio
Ich habe eine XLSX-Datei mit den folgenden Daten, die ich einlesen und in der Blazor Server App öffnen möchte:
Input XLSX Excel Sheet | Result in Blazor Server Browser | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ![]() |
Beginnen Sie mit der Erstellung eines Blazor-Projekts in der Visual Studio IDE:

Wählen Sie den Projekttyp Blazor Server App
:

Fahren Sie fort und führen Sie die Anwendung aus, ohne die Lösung mit der F5
Taste zu ändern. Navigieren Sie zur Fetch data
-Registerkarte der Anwendung, wie folgt:

Unser Ziel ist es, die Excel-Datei mit einer Upload-Schaltfläche in die Blazor-App zu laden und sie dann auf dieser Seite anzuzeigen.
Schritt 2 - IronXL zu Ihrer Lösung hinzufügen
IronXL: .NET Excel Library (Installationsanleitung):
IronXL ist eine .NET-Bibliothek, die es Ihnen ermöglicht, die Kalkulationstabelle in Microsoft Excel wie ein Objekt zu behandeln, so dass der Entwickler die volle Leistungsfähigkeit von C# und dem .NET-Framework nutzen kann, um den Datenstrom zu manipulieren. Als Entwickler wünschen wir uns eine Möglichkeit, mit der wir alle Zeilenzellen und Spalteninformationen aus Excel-Dokumenten/Arbeitsblättern in unsere Anwendungen oder Datenbanken übernehmen können.
Mit IronXL ist es möglich, alle Arten von Informationen aus einem Arbeitsblatt abzurufen, z. B. Zellwerte, Zellinhalte, Bilder, Referenzen und Formatierungen. IronXL ist in vielerlei Hinsicht besser als NPOI. IronXL bietet mehr Funktionen und kann das Schreiben komplexer Logik vereinfachen. Außerdem gibt es günstigere Lizenzen und das Support-Team ist kompetenter.
IronXL unterstützt alle neuesten Versionen von .NET (8, 7 und 6) und .NET Core Framework 4.6.2+.
Fügen Sie IronXL mit einer der unten aufgeführten Methoden zu Ihrer Lösung hinzu und erstellen Sie die Lösung.
Option 2A - NuGet-Paketmanager verwenden
Install-Package IronXL.Excel
Option 2B - PackageReference in der csproj-Datei hinzufügen
Sie können IronXL direkt zu Ihrem Projekt hinzufügen, indem Sie die folgende Zeile zu einer beliebigen <ItemGroup>
in der .csproj
-Datei Ihrer Lösung hinzufügen:
<PackageReference Include="IronXL.Excel" Version="*" />
Wie hier in Visual Studio gezeigt:

Schritt 3 - Codierung des Dateiuploads und der Ansicht
Im Visual Studio Solution View gehen Sie zum Ordner Pages/
und finden Sie die Datei FetchData.razor
. Sie können jede andere Razor-Datei verwenden, aber wir werden diese verwenden, da sie mit der Blazor Server App-Vorlage geliefert wird.
Ersetzen Sie den Inhalt der Datei replace durch den folgenden 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
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());
' }
' }
'}
Zusammenfassung
Die <InputFile>
-Komponente ermöglicht Ihnen das Hochladen einer Datei auf dieser Webseite. Und wir haben den aufgerufenen Ereignis-Callback so eingestellt, dass er OpenExcelFileFromDisk
aufruft, was die asynchrone Methode im @code
-Block unten ist. Das HTML wird Ihr Excel-Blatt als Tabelle auf der Registerkarte darstellen.
IronXL.Excel ist eine reine .NET-Softwarebibliothek zum Lesen einer Vielzahl von Tabellenkalkulationsformaten. Es erfordert nicht, dass Microsoft Excel installiert ist, und ist nicht von Interop abhängig.
Weitere Lektüre
Ansicht der API-Referenz
Entdecken Sie die API-Referenz für IronXL, die Details zu allen Funktionen, Namespaces, Klassen, Methoden, Feldern und Enums von IronXL enthält.
Ansicht der API-ReferenzLaden Sie das Softwareprodukt herunter.