Blazor Read Excel File in C# Using IronXL (Example Tutorial)
簡介
Blazor 是由微軟所開發的開源 .NET Web 框架。 Blazor 應用程式的運作原理是將 C# 程式碼編譯成符合瀏覽器標準的 JavaScript 和 HTML。 在本教學中,我將分享如何使用 IronXL C# 程式庫,在 Blazor 伺服器端應用程式中讀取 Excel 文件/工作表的最佳且簡易方法。
如何在 Blazor 中讀取 Excel 檔案
- 安裝 C# 函式庫以在 Blazor 中讀取 Excel 檔案
- 在您的 Blazor 應用程式中建立檔案上傳按鈕
- 使用 C# 函式庫從磁碟讀取 Excel 檔案
- 設定 Blazor 應用程式,將讀取的資料以表格形式顯示於 Windows 視窗中
開始使用 IronXL
步驟 1 - 在 Visual Studio 中建立 Blazor 專案
我有一份 XLSX 檔案,其中包含以下資料,我將把這些資料讀入並在 Blazor Server App 中開啟:
| 輸入 XLSX Excel 試算表 | Blazor Server 瀏覽器中的結果 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
首先,請從 Visual Studio 整合開發環境 (IDE) 中建立一個 Blazor 專案:
請選擇 Blazor Server App 專案類型:
請直接使用 F5 金鑰執行應用程式,無需修改解決方案。 請依下述方式導航至應用程式的 Fetch data 標籤頁:
我們的目標是透過上傳按鈕將 Excel 檔案載入 Blazor 應用程式,並在該頁面中顯示該檔案。
步驟 2 - 將 IronXL 加入您的解決方案
IronXL:.NET Excel 程式庫(安裝說明):
IronXL 是一個 .NET 程式庫,讓您能將 Microsoft Excel 中的試算表視為物件,使開發人員能夠運用 C# 和 .NET Framework 的全部功能來處理資料流。 身為開發者,我們希望有一種簡便的方法,能將 Excel 文件/試算表中每一列的儲存格與欄位資訊,導入我們的應用程式或資料庫中。
透過 IronXL,您可以從工作表中取得各類資訊,例如儲存格值、儲存格內容、圖片、參照以及格式設定。 IronXL 在許多方面都比 NPOI 更勝一籌。 IronXL 提供更多功能,能讓撰寫複雜邏輯變得更輕鬆。 此外,其授權條款更為優越,且技術支援團隊的專業能力更為出色。
IronXL 支援所有最新版本的 .NET(8、7 及 6)以及 .NET Core Framework 4.6.2 以上版本。
請使用以下任一方法將 IronXL 加入您的解決方案,然後編譯該解決方案。
選項 2A - 使用 NuGet 套件管理員
Install-Package IronXL.Excel
選項 2B - 在 csproj 檔案中新增 PackageReference
您可以透過在解決方案的 .csproj 檔案中,於任何 <ItemGroup> 處加入以下行,將 IronXL 直接加入您的專案:
<PackageReference Include="IronXl.Excel" Version="*" />
<PackageReference Include="IronXl.Excel" Version="*" />
如 Visual Studio 中的示例所示:
步驟 3 - 實作檔案上傳與檢視功能
在 Visual Studio 的"解決方案檢視"中,前往 Pages/ 資料夾並找到 FetchData.razor 檔案。您可使用任何其他 Razor 檔案,但我們將使用此檔案,因為它隨 Blazor Server App 範本一併提供。
請將檔案內容替換為以下程式碼:
@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.Co/lumns)
{
<th>
@column.Co/lumnName
</th>
}
</tr>
</thead>
<tbody>
@foreach (DataRow row in displayDataTable.Rows)
{
<tr>
@foreach (DataColumn column in displayDataTable.Co/lumns)
{
<td>
@row[column.Co/lumnName].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.Co/lumnCount; col++)
{
displayDataTable.Co/lumns.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.Co/lumns)
{
<th>
@column.Co/lumnName
</th>
}
</tr>
</thead>
<tbody>
@foreach (DataRow row in displayDataTable.Rows)
{
<tr>
@foreach (DataColumn column in displayDataTable.Co/lumns)
{
<td>
@row[column.Co/lumnName].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.Co/lumnCount; col++)
{
displayDataTable.Co/lumns.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
}
摘要
<InputFile> 元件可讓您在此網頁上傳檔案。 我們已將觸發的事件回呼設定為呼叫 OpenExcelFileFromDisk,此為底部 @code 區塊中的非同步方法。 HTML 會將您的 Excel 試算表渲染為標籤頁上的表格。
IronXl.Excel 是一個獨立的 .NET 軟體程式庫,用於讀取多種電子表格格式。 無需安裝 Microsoft Excel,且不依賴 Interop。
延伸閱讀
下載該軟體產品。
常見問題
如何在 Blazor 伺服器端應用程式中讀取 Excel 檔案?
若要在 Blazor 伺服器端應用程式中讀取 Excel 檔案,您可以使用 IronXL C# 程式庫。透過 NuGet 套件管理員安裝此程式庫,並實作讀取及顯示 Excel 資料的程式碼,即可輕鬆將其整合至您的 Blazor 專案中。
建立 Blazor 專案以讀取 Excel 檔案的步驟為何?
首先,透過 NuGet 套件管理員安裝 IronXL。接著,在您的 Blazor 應用程式中建立一個檔案上傳按鈕。使用 IronXL 讀取上傳的 Excel 檔案,並設定應用程式透過 Razor 元件以表格形式顯示資料。
在未安裝 Excel 的情況下,是否可以在 Blazor 應用程式中讀取 Excel 檔案?
是的,透過 IronXL,您可以在 Blazor 應用程式中讀取和處理 Excel 檔案,而無需在系統上安裝 Microsoft Excel。
如何在 Blazor 應用程式中顯示 Excel 資料?
使用 IronXL 讀取 Excel 檔案後,您可以在 Blazor 應用程式中使用 Razor 元件,將資料以表格格式呈現,從而提升使用者介面體驗。
IronXL 相較於其他 Excel 程式庫有哪些優勢?
IronXL 提供豐富的功能、輕鬆處理複雜邏輯的能力、優越的授權條款以及專屬技術支援,使其相較於 NPOI 等替代方案更為理想。
IronXL 支援哪些 .NET 版本來進行 Excel 操作?
IronXL 支援所有最新版本的 .NET(包括 8、7 和 6),以及 .NET Core Framework 4.6.2 以上版本,確保與現代應用程式廣泛相容。
如何將 Excel 函式庫整合到我的 Blazor 專案中?
您可以透過 NuGet 套件管理員執行命令 `dotnet add package IronXL.Excel`,或在 .csproj 檔案中新增 PackageReference,將 IronXL 程式庫整合至您的 Blazor 專案中。
若我的 Blazor 應用程式無法讀取 Excel 檔案,該採取哪些疑難排解步驟?
請確認已透過 NuGet 正確安裝 IronXL,且您的 Blazor 應用程式具備從磁碟讀取檔案所需的權限。請再次確認 Excel 檔案路徑正確無誤,且該檔案格式為 IronXL 所支援。

