Blazor Read Excel File in C# Using IronXL (Example Tutorial)
简介
Blazor 是由微软创建的开源 .NET Web 框架。 Blazor 应用程序的工作原理是将 C# 代码编译成符合浏览器规范的 JavaScript 和 HTML。 在本教程中,我将分享使用 IronXL C# 库在 Blazor 服务器端应用程序中读取 Excel 文档/工作表的最佳和最简单的方法。
如何在 Blazor 中读取 Excel 文件
- 在 Blazor 中安装 C# 库以读取 Excel 文件
- 在您的 Blazor 应用程序上创建一个文件上传按钮
- 使用 C# 库从磁盘读取 Excel 文件
- 配置 Blazor 应用程序以在窗口中表格显示读取的数据
开始使用 IronXL
步骤 1 - 在 Visual Studio 中创建 Blazor 项目
我有一个包含以下数据的 XLSX 文件,我需要将其读取并导入到 Blazor 服务器应用程序中打开:
| 输入 XLSX Excel 表格 | Blazor 服务器浏览器中的结果 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
首先,在 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
您可以通过在解决方案的<ItemGroup>添加以下行,直接将IronXL添加到您的项目中:
<PackageReference Include="IronXl.Excel" Version="*" />
<PackageReference Include="IronXl.Excel" Version="*" />
如图所示,在 Visual Studio 中:
步骤 3 - 编写文件上传和查看功能
在Visual Studio解决方案视图中,进入FetchData.razor文件。您可以使用任何其他的razor文件,但我们将使用这个,因为它附带了Blazor服务器应用模板。
将文件内容替换为以下代码:
@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
}
摘要
<InputFile>组件允许您在此网页上上传文件。 我们已经设置了调用事件回调来调用@code块中的异步方法。 HTML代码会将您的Excel表格渲染成标签页上的表格。
IronXl.Excel 是一个独立的 .NET 软件库,用于读取各种电子表格格式。 它不需要安装Microsoft Excel ,也不依赖于 Interop。
进一步阅读
下载软件产品。
常见问题解答
我如何在 Blazor 服务器端应用程序中读取 Excel 文件?
要在 Blazor 服务器端应用程序中读取 Excel 文件,您可以使用 IronXL C# 库。它允许您轻松集成到您的 Blazor 项目中,通过使用 NuGet 包管理器安装库,然后实现代码以读取和显示 Excel 数据。
设置 Blazor 项目以读取 Excel 文件的步骤是什么?
首先,通过 NuGet 包管理器安装 IronXL。接下来,在您的 Blazor 应用程序中创建一个文件上传按钮。使用 IronXL 读取上传的 Excel 文件,并配置应用程序使用 Razor 组件在表格中显示数据。
在没有安装 Excel 的情况下,可以在 Blazor 应用程序中读取 Excel 文件吗?
是的,使用 IronXL,您可以在没有系统中安装 Microsoft Excel 的情况下在 Blazor 应用程序中读取和操作 Excel 文件。
我如何在 Blazor 应用程序中显示 Excel 数据?
使用 IronXL 读取 Excel 文件后,您可以在 Blazor 应用程序中使用 Razor 组件以表格式显示数据,增强用户界面。
IronXL 相对其他 Excel 库有什么优势?
IronXL 提供广泛的功能、处理复杂逻辑的简便性、优越的许可条款和专门的支持,使其成为 NPOI 等替代方案的首选。
IronXL 支持哪些 .NET 版本进行 Excel 操作?
IronXL 支持包括 8、7 和 6 在内的所有最新 .NET 版本以及.NET Core Framework 4.6.2+,确保与现代应用程序的广泛兼容性。
我如何将 Excel 库集成到我的 Blazor 项目中?
您可以通过使用命令dotnet add package IronXL.Excel的 NuGet 包管理器或在.csproj文件中添加PackageReference将像 IronXL 这样的 Excel 库集成到您的 Blazor 项目中。
如果我的 Blazor 应用程序无法读取 Excel 文件,我该采取哪些故障排除步骤?
确保 IronXL 已通过 NuGet 正确安装,并且您的 Blazor 应用程序具备从磁盘读取文件的必要权限。仔细检查 Excel 文件路径是否正确,以及文件格式是否受 IronXL 支持。

