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());
}
}
}
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());
' }
' }
'}
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.

