使用 IronXL 在 C# 中閱讀 Blazor Excel 文件(範例教程)

This article was translated from English: Does it need improvement?
Translated
View the article in English

介紹

Blazor 是由微軟創建的開源 .NET 網頁框架。Blazor 應用程序通過將 C# 代碼編譯成符合瀏覽器的 JavaScript 和 HTML 來工作。在本教程中,我將分享使用 IronXL C# 庫在 Blazor 伺服端應用程式中讀取 Excel 文檔/工作表的最佳且簡便的方法。

IronXL 在 Blazor 中查看 Excel 的示範

步驟1 - 在 Visual Studio 中建立 Blazor 專案

我有一個包含以下數據的 XLSX 檔案,我將在 Blazor Server 應用程式中讀取並開啟:

輸入 XLSX Excel 工作表在 Blazor Server Browser 中的結果
名字姓氏ID
約翰蘋果史密斯1
理查德史密斯2
雪莉羅賓斯3

首先從 Visual Studio IDE 建立一個 Blazor 專案:

選擇 Blazor Server App 專案類型:

請繼續使用 F5 鍵運行應用程序而不更改解決方案。像這樣導航到應用程序的 Fetch data 標籤:

我們的目標是將 Excel 文件通過上傳按鈕加載到 Blazor 應用中,然後在此頁面顯示。

步驟 2 - 將 IronXL 添加到您的解決方案中

IronXL: .NET Excel 函式庫 (安裝說明)IronXL 是一個 .NET 函式庫,允許您將 Microsoft Excel 的電子表格視為一個對象,讓開發者能夠使用 C# 和 .NET 框架的全部功能來操作數據流。我們作為開發者,希望能有一個便捷的方法,通過該方法可以將 Excel 文件/工作表中的每一行單元格和欄位資訊導入到我們的應用程式或資料庫中。

使用 IronXL,可以從工作表中獲取各種資訊,如單元格值、單元格內容、圖片、引用和格式。IronXL 在許多方面優於 NPOI。IronXL 提供了更多功能,使編寫複雜邏輯更加簡單。它還有更優惠的許可證,並且支援團隊更為專業。

IronXL 支持所有最新版本的 .NET (8, 7, 和 6) 和 .NET Core Framework 4.6.2+ 。

使用以下方法之一將 IronXL 添加到您的方案中,然後構建該方案。

選項2A - 使用 NuGet 套件管理器

C# NuGet 程式庫用于 Excel

安裝與 NuGet

Install-Package IronXL.Excel
Java PDF JAR

下載 DLL

下載DLL

手動安裝到您的項目中

C# NuGet 程式庫用于 Excel

安裝與 NuGet

Install-Package IronXL.Excel
Java PDF JAR

下載 DLL

下載DLL

手動安裝到您的項目中

立即開始在您的專案中使用IronPDF,並享受免費試用。

第一步:
green arrow pointer

查看 IronXLNuget 快速安裝和部署。已被下載超過800萬次,它正用C#改變Excel。

C# NuGet 程式庫用于 Excel nuget.org/packages/IronXL.Excel/
Install-Package IronXL.Excel

請考慮安裝 IronXL DLL 直接下載並手動安裝到您的專案或GAC表單: IronXL.zip

手動安裝到您的項目中

下載DLL

選項 2B - 在 csproj 文件中添加 PackageReference

您可以通過在任何 <ItemGroup>在您的解決方案的.csproj` 檔案中:

<PackageReference Include="IronXL.Excel" Version="*" />
XML

如在 Visual Studio 中所示:

步驟 3 - 編寫檔案上傳和查看程式碼

在 Visual Studio 解決方案檢視中,轉到 Pages/ 文件夾並找到 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
    private DataTable displayDataTable = new DataTable();

    // When a file is uploaded to the App using the InputFile, trigger:
    async Task OpenExcelFileFromDisk(InputFileChangeEventArgs e)
    {
        IronXL.License.LicenseKey = "PASTE TRIAL OR LICENSE KEY";

        // Open the File to a MemoryStream object
        MemoryStream ms = new MemoryStream();

        await e.File.OpenReadStream().CopyToAsync(ms);
        ms.Position = 0;

        // Define variables for IronXL
        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
        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
    private DataTable displayDataTable = new DataTable();

    // When a file is uploaded to the App using the InputFile, trigger:
    async Task OpenExcelFileFromDisk(InputFileChangeEventArgs e)
    {
        IronXL.License.LicenseKey = "PASTE TRIAL OR LICENSE KEY";

        // Open the File to a MemoryStream object
        MemoryStream ms = new MemoryStream();

        await e.File.OpenReadStream().CopyToAsync(ms);
        ms.Position = 0;

        // Define variables for IronXL
        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
        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
'	private DataTable displayDataTable = New DataTable();
'
'	' When a file is uploaded to the App using the InputFile, trigger:
'	async Task OpenExcelFileFromDisk(InputFileChangeEventArgs e)
'	{
'		IronXL.License.LicenseKey = "PASTE TRIAL OR LICENSE KEY";
'
'		' Open the File to a MemoryStream object
'		MemoryStream ms = New MemoryStream();
'
'		await e.File.OpenReadStream().CopyToAsync(ms);
'		ms.Position = 0;
'
'		' Define variables for IronXL
'		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
'		for (int row = 1 ; row < loadedWorkSheet.RowCount ; row++)
'		{
'			IEnumerable<string> excelRow = loadedWorkSheet.GetRow(row).ToArray().@Select(c => c.ToString());
'			displayDataTable.Rows.Add(excelRow.ToArray());
'		}
'	}
'}
VB   C#

摘要

The <InputFile> component 將允許您在此網頁上上傳檔案。我們已設置調用事件回調以調用 OpenExcelFileFromDisk,這是在 @code 區塊底部的異步方法。HTML 將渲染您的 Excel 表格為選項卡上的表格。

IronXL.Excel 是唯一的 .NET 軟件庫,用於讀取各種電子表格格式。它不需要 微軟 Excel 安裝,並且不依賴於Interop。


進一步閱讀

查看 API 參考文件

查看 IronXL 的 API 參考文件,詳述 IronXL 的所有功能、命名空間、類別、方法字段和列舉。

查看 API 參考文件

*下載 該軟體產品。