Blazor Read Excel File in C# Using IronXL (Example Tutorial)
Einführung
Blazor ist ein Open-Source .NET-Web-Framework, das von Microsoft erstellt wurde. Eine Blazor-Anwendung funktioniert, indem der C#-Code in JavaScript und HTML übersetzt wird, die mit Browsern kompatibel sind. In diesem Tutorial teile ich Wissen über die beste und einfachste Methode zum Lesen von Excel-Dokumenten/-Arbeitsblättern in einer serverseitigen Blazor-Anwendung mit der IronXL C#-Bibliothek.
Wie man eine Excel-Datei in Blazor liest
- Installation einer C#-Bibliothek zum Lesen von Excel-Dateien in Blazor
- Erstellen Sie eine Datei-Upload-Taste in Ihrer Blazor-Anwendung
- Verwenden Sie die C#-Bibliothek, um eine Excel-Datei zu lesen
- Konfigurieren Sie die Blazor-App, um die gelesenen Daten in einem Fenster in einer Tabelle anzuzeigen
Erste Schritte mit IronXL
Schritt 1 - Erstellen Sie ein Blazor-Projekt in Visual Studio
Ich habe eine XLSX-Datei, die die folgenden Daten enthält, die ich in die Blazor-Server-App lesen und öffnen werde:
| Eingabe XLSX Excel-Tabelle | Ergebnis in Blazor Server Browser | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
Beginnen Sie mit der Erstellung eines Blazor-Projekts über die Visual Studio AUSWEISE:
Wählen Sie den Blazor Server App Projekttyp:
Führen Sie die Anwendung nun aus, ohne die Lösung mit dem Schlüssel F5 zu ändern. Navigieren Sie wie folgt zur Registerkarte Fetch data der Anwendung:
Unser Ziel wird es sein, unsere Excel-Datei in die Blazor-App mit einem Upload-Button zu laden und dann auf dieser Seite anzuzeigen.
Schritt 2 - Fügen Sie IronXL zu Ihrer Lösung hinzu
IronXL: .NET Excel Bibliothek (Installationsanleitung):
IronXL ist eine .NET-Bibliothek, die es Ihnen ermöglicht, die Tabelle in Microsoft Excel wie ein Objekt zu behandeln, was es dem Entwickler ermöglicht, die volle Leistungsfähigkeit von C# und dem .NET-Framework zu nutzen, um Datenströme zu manipulieren. Als Entwickler wollen wir eine schöne Möglichkeit, mit der wir die Informationen jeder Zeile und Spalte aus Excel-Dokumenten/-Arbeitsblättern in unsere Anwendungen oder Datenbanken holen können.
Mit IronXL ist es möglich, alle Arten von Informationen aus einem Arbeitsblatt zu erhalten, wie z.B. Zellwerte, Zellinhalte, Bilder, Referenzen und Formatierungen. IronXL ist in vielen Aspekten besser als NPOI. IronXL bietet mehr Funktionen und erleichtert das Schreiben komplexer Logik. Es hat auch günstigere Lizenzen und ein kompetenteres Support-Team.
IronXL unterstützt alle die neuesten Versionen von .NET (8, 7 und 6) und .NET Core Framework 4.6.2+.
Fügen Sie IronXL zu Ihrer Lösung mit einer der unten aufgeführten Methoden hinzu und erstellen Sie dann die Lösung.
Option 2A - Verwenden Sie den NuGet-Paket-Manager
Install-Package IronXL.Excel
Option 2B - Fügen Sie PackageReference im csproj hinzu
Sie können IronXL direkt in Ihr Projekt einbinden, indem Sie die folgende Zeile in eine beliebige <ItemGroup>-Datei in der .csproj-Datei Ihrer Lösung einfügen:
<PackageReference Include="IronXl.Excel" Version="*" />
<PackageReference Include="IronXl.Excel" Version="*" />
Wie hier in Visual Studio gezeigt:
Schritt 3 - Programmierung des Datei-Uploads und der Anzeige
Wechseln Sie in der Visual Studio-Lösungsansicht zum Ordner Pages/ und suchen Sie die Datei FetchData.razor. Sie können jede andere Razor-Datei verwenden, wir verwenden jedoch diese, da sie im Lieferumfang der Blazor Server App-Vorlage enthalten ist.
Ersetzen Sie den Dateiinhalte mit folgendem 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());
}
}
}
Imports IronXL
Imports System.Data
@page "/fetchdata"
<PageTitle>Excel File Viewer</PageTitle>
<h1>Open Excel File to View</h1>
<InputFile OnChange="@OpenExcelFileFromDisk" />
<table>
<thead>
<tr>
@For Each column As DataColumn In displayDataTable.Columns
<th>
@column.ColumnName
</th>
Next
</tr>
</thead>
<tbody>
@For Each row As DataRow In displayDataTable.Rows
<tr>
@For Each column As DataColumn In displayDataTable.Columns
<td>
@row(column.ColumnName).ToString()
</td>
Next
</tr>
Next
</tbody>
</table>
@code {
' Create a DataTable instance
Private displayDataTable As New DataTable()
' This method is triggered when a file is uploaded
Private Async Function OpenExcelFileFromDisk(e As InputFileChangeEventArgs) As Task
IronXl.License.LicenseKey = "PASTE TRIAL OR LICENSE KEY"
' Load the uploaded file into a MemoryStream
Dim ms As New MemoryStream()
Await e.File.OpenReadStream().CopyToAsync(ms)
ms.Position = 0
' Create an IronXL workbook from the MemoryStream
Dim loadedWorkBook As WorkBook = WorkBook.FromStream(ms)
Dim loadedWorkSheet As WorkSheet = loadedWorkBook.DefaultWorkSheet ' Or use .GetWorkSheet()
' Add header Columns to the DataTable
Dim headerRow As RangeRow = loadedWorkSheet.GetRow(0)
For col As Integer = 0 To loadedWorkSheet.ColumnCount - 1
displayDataTable.Columns.Add(headerRow.ElementAt(col).ToString())
Next
' Populate the DataTable with data from the Excel sheet
For row As Integer = 1 To loadedWorkSheet.RowCount - 1
Dim excelRow As IEnumerable(Of String) = loadedWorkSheet.GetRow(row).ToArray().Select(Function(c) c.ToString())
displayDataTable.Rows.Add(excelRow.ToArray())
Next
End Function
}
Zusammenfassung
Mit der Komponente <InputFile> können Sie eine Datei auf dieser Webseite hochladen. Wir haben den Callback für das aufgerufene Ereignis so festgelegt, dass er OpenExcelFileFromDisk aufruft, was die asynchrone Methode im Block @code am Ende ist. Das HTML wird Ihr Excel-Blatt als Tabelle im Tab rendern.
IronXl.Excel ist eine eigenständige .NET-Softwarebibliothek zum Lesen einer Vielzahl von Tabellenformaten. Es erfordert nicht, dass Microsoft Excel installiert ist, und ist nicht von Interop abhängig.
Weiterführende Literatur
Sehen Sie sich die API-Referenz an
Entdecken Sie die API-Referenz für IronXL, in der alle Funktionen, Namespaces, Klassen, Methoden, Felder und Enums von IronXL im Detail beschrieben sind.
Sehen Sie sich die API-Referenz anLaden Sie das Softwareprodukt herunter.
Häufig gestellte Fragen
Wie kann ich Excel-Dateien in einer Blazor-Server-Anwendung lesen?
Um Excel-Dateien in einer Blazor-Server-Anwendung zu lesen, können Sie die IronXL C#-Bibliothek verwenden. Sie ermöglicht es Ihnen, sich einfach mit Ihrem Blazor-Projekt zu integrieren, indem Sie den NuGet-Paketmanager verwenden, um die Bibliothek zu installieren und dann Code zu implementieren, um Excel-Daten zu lesen und anzuzeigen.
Welche Schritte sind erforderlich, um ein Blazor-Projekt zum Lesen von Excel-Dateien einzurichten?
Zuerst installieren Sie IronXL über den NuGet-Paketmanager. Danach erstellen Sie eine Datei-Upload-Taste in Ihrer Blazor-Anwendung. Verwenden Sie IronXL, um die hochgeladene Excel-Datei zu lesen und konfigurieren Sie die App, um die Daten mit Razor-Komponenten in einer Tabelle anzuzeigen.
Ist es möglich, Excel-Dateien in einer Blazor-Anwendung zu lesen, ohne Excel installiert zu haben?
Ja, mit IronXL können Sie Excel-Dateien in einer Blazor-Anwendung lesen und manipulieren, ohne dass Microsoft Excel auf Ihrem System installiert sein muss.
Wie kann ich Excel-Daten in einer Blazor-Anwendung anzeigen?
Nachdem Sie die Excel-Datei mit IronXL gelesen haben, können Sie in Ihrer Blazor-Anwendung Razor-Komponenten verwenden, um die Daten in einem Tabellenformat anzuzeigen, was die Benutzeroberfläche verbessert.
Welche Vorteile bietet IronXL gegenüber anderen Excel-Bibliotheken?
IronXL bietet umfangreiche Funktionen, eine einfache Handhabung komplexer Logik, überlegene Lizenzbedingungen und einen engagierten Support, was es zur bevorzugten Wahl gegenüber Alternativen wie NPOI macht.
Welche .NET-Versionen werden von IronXL für die Excel-Manipulation unterstützt?
IronXL unterstützt alle neuesten Versionen von .NET, einschließlich 8, 7 und 6, sowie .NET Core Framework 4.6.2+, was eine breite Kompatibilität mit modernen Anwendungen gewährleistet.
Wie integriere ich eine Excel-Bibliothek in mein Blazor-Projekt?
Sie können eine Excel-Bibliothek wie IronXL in Ihr Blazor-Projekt integrieren, indem Sie den NuGet-Paketmanager mit dem Befehl dotnet add package IronXL.Excel verwenden oder indem Sie ein PackageReference in der .csproj-Datei hinzufügen.
Welche Schritte zur Fehlerbehebung kann ich unternehmen, wenn meine Blazor-App eine Excel-Datei nicht lesen kann?
Stellen Sie sicher, dass IronXL korrekt über NuGet installiert ist und dass Ihre Blazor-App die erforderlichen Berechtigungen zum Lesen von Dateien von der Festplatte hat. Überprüfen Sie, ob der Pfad zur Excel-Datei korrekt ist und dass das Dateiformat von IronXL unterstützt wird.

