Blazor Read Excel File in C# Using IronXL (Example Tutorial)
Wprowadzenie
Blazor to otwartoźródłowy .NET Web framework stworzony przez Microsoft. Aplikacja Blazor działa poprzez kompilowanie kodu C# do zgodnego z przeglądarką JavaScript i HTML. W tym tutorialu podzielę się wiedzą na temat najlepszego i najprostszego sposobu odczytywania dokumentów/arkuszy Excel w aplikacji Blazor działającej po stronie serwera przy użyciu biblioteki IronXL C#.
Jak odczytać plik Excel w Blazor
- Zainstaluj bibliotekę C# do odczytu pliku Excel w Blazor
- Utwórz przycisk Prześlij plik w swojej aplikacji Blazor
- Użyj biblioteki C# do odczytu pliku Excel z dysku
- Skonfiguruj aplikację Blazor, aby wyświetlała odczytane dane w tabeli na oknie
Rozpocznij pracę z IronXL
Krok 1 - Utwórz projekt Blazor w Visual Studio
Mam plik XLSX zawierający poniższe dane, które będę czytać i otwieram w aplikacji Blazor Server:
| Wejściowy arkusz Excel XLSX | Wynik w przeglądarce Blazor Server | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
Rozpocznij od utworzenia projektu Blazor z IDE Visual Studio:
Wybierz typ projektu Blazor Server App:
Uruchom aplikację bez zmiany rozwiązania za pomocą klawisza F5. Przejdź do zakładki Fetch data aplikacji w następujący sposób:
Naszym celem będzie załadowanie pliku Excel do aplikacji Blazor za pomocą przycisku do przesyłania, a następnie wyświetlenie go na tej stronie.
Krok 2 - Dodaj IronXL do swojego rozwiązania
IronXL: .NET Excel Library (Instrukcja instalacji):
IronXL to biblioteka .NET, która pozwala traktować arkusz kalkulacyjny w Microsoft Excel jak obiekt, umożliwiając deweloperowi użycie pełnej mocy C# i .NET Framework do manipulacji strumieniami danych. Jako deweloper chcemy mieć dobry sposób na pobieranie informacji o każdej komórce i kolumnie z dokumentów/arkuszy Excel do naszych aplikacji lub baz danych.
Dzięki IronXL możliwe jest uzyskanie wszelkiego rodzaju informacji z arkusza, takich jak wartości komórek, zawartość komórek, obrazy, odniesienia i formatowanie. IronXL jest lepszy niż NPOI w wielu aspektach. IronXL dostarcza więcej funkcji i może ułatwić pisanie skomplikowanej logiki. Posiada również bardziej preferowane licencje, a zespół wsparcia jest bardziej kompetentny.
IronXL obsługuje wszystkie najnowsze wersje .NET (8, 7 i 6) oraz .NET Core Framework 4.6.2+.
Dodaj IronXL do swojego rozwiązania za pomocą jednej z poniższych metod, a następnie zbuduj rozwiązanie.
Opcja 2A - Użyj Menedżera Pakietów NuGet
Install-Package IronXl.Excel
Opcja 2B - Dodaj PackageReference w pliku csproj
Możesz dodać IronXL bezpośrednio do swojego projektu, dodając poniższą linię do dowolnego <ItemGroup> w pliku .csproj twojego rozwiązania:
<PackageReference Include="IronXl.Excel" Version="*" />
<PackageReference Include="IronXl.Excel" Version="*" />
Jak pokazano tutaj w Visual Studio:
Krok 3 - Kodowanie przesyłania plików i widoku
W widoku rozwiązania Visual Studio przejdź do folderu Pages/ i znajdź plik FetchData.razor. Możesz użyć dowolnego innego pliku razor, ale użyjemy tego, ponieważ jest dostarczany z szablonem aplikacji Blazor Server.
Zastąp zawartość pliku poniższym kodem:
@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
}
Podsumowanie
Komponent <InputFile> pozwala przesyłać plik na tę stronę. Ustawiliśmy wywoływane zdarzenie zwrotne, aby wywołać OpenExcelFileFromDisk, co jest asynchroniczną metodą w bloku @code na dole. HTML wyświetli arkusz Excel jako tabelę na zakładce.
IronXl.Excel to samodzielna biblioteka oprogramowania .NET do odczytu szerokiej gamy formatów arkuszy kalkulacyjnych. Nie wymaga zainstalowanego Microsoft Excel i nie jest zależny od Interop.
Dalsza lektura
Zobacz Dokumentację API
Przeglądaj Dokumentację API dla IronXL, opisującą szczegóły wszystkich funkcji, przestrzeni nazw, klas, metod, pól i wyliczników IronXL.
Zobacz Dokumentację APIPobierz produkt oprogramowania.
Często Zadawane Pytania
Jak mogę odczytać pliki Excel w aplikacji Blazor po stronie serwera?
Aby odczytać pliki Excel w aplikacji Blazor po stronie serwera, można użyć biblioteki IronXL w języku C#. Umożliwia ona łatwą integrację z projektem Blazor, instalując bibliotekę za pomocą Menedżera pakietów NuGet, a następnie implementując kod do odczytywania i wyświetlania danych Excel.
Jakie są kroki, aby skonfigurować projekt Blazor do odczytu plików Excel?
Najpierw zainstaluj IronXL za pomocą Menedżera pakietów NuGet. Następnie utwórz przycisk do przesyłania plików w aplikacji Blazor. Użyj IronXL do odczytania przesłanego pliku Excel i skonfiguruj aplikację, aby wyświetlała dane w tabeli, używając komponentów Razor.
Czy możliwe jest odczytywanie plików Excel w aplikacji Blazor bez zainstalowanego Excela?
Tak, z IronXL można odczytywać i manipulować plikami Excel w aplikacji Blazor bez posiadania zainstalowanego Microsoft Excel na systemie.
Jak mogę wyświetlać dane Excel w aplikacji Blazor?
Po odczytaniu pliku Excel za pomocą IronXL, można użyć komponentów Razor w aplikacji Blazor, aby wyświetlać dane w formacie tabeli, ulepszając interfejs użytkownika.
Jakie korzyści oferuje IronXL w porównaniu do innych bibliotek Excel?
IronXL oferuje rozległą funkcjonalność, łatwość obsługi skomplikowanej logiki, lepsze warunki licencyjne oraz dedykowane wsparcie, co czyni ją lepszym wyborem w porównaniu do alternatyw jak NPOI.
Jakie wersje .NET są wspierane przez IronXL do manipulacji Excel?
IronXL obsługuje wszystkie najnowsze wersje .NET, w tym 8, 7 i 6, a także .NET Core Framework 4.6.2+, zapewniając szeroką kompatybilność z nowoczesnymi aplikacjami.
Jak zintegrować bibliotekę Excel z moim projektem Blazor?
Możesz zintegrować bibliotekę Excel, taką jak IronXL, z projektem Blazor, używając Menedżera pakietów NuGet z komendą dotnet add package IronXl.Excel lub dodając PackageReference w pliku .csproj.
Jakie kroki należy podjąć, jeśli moja aplikacja Blazor nie odczytuje pliku Excel?
Upewnij się, że IronXL jest poprawnie zainstalowany przez NuGet i że aplikacja Blazor ma odpowiednie uprawnienia do odczytywania plików z dysku. Sprawdź dokładnie ścieżkę pliku Excel i upewnij się, że format pliku jest obsługiwany przez IronXL.

