如何使用 C# 在 Blazor 中讀取 Excel 文件

使用 IronXL 在 C# 中讀取 Blazor Excel 檔案(範例教學)

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

介紹

Blazor 是由微軟創建的開源 .NET Web 框架。 Blazor 應用程式的工作原理是將 C# 程式碼編譯成符合瀏覽器規範的 JavaScript 和 HTML。 在本教程中,我將分享使用 IronXL C# 庫在 Blazor 伺服器端應用程式中讀取 Excel 文件/工作表的最佳和最簡單的方法。

Demonstration of IronXL Viewing Excel in Blazor

開始使用 IronXL


步驟 1 - 在 Visual Studio 中建立 Blazor 項目

我有一個包含以下數據的 XLSX 文件,我需要將其讀取並導入到 Blazor 伺服器應用程式中開啟:

輸入 XLSX Excel 表格Blazor 伺服器瀏覽器中的結果
ID
約翰蘋果匠1
理查史密斯2
雪莉酒知更鳥3
Browser View related to 步驟 1 - 在 Visual Studio 中建立 Blazor 項目

首先,在 Visual Studio IDE 中建立一個 Blazor 專案:

New Project related to 步驟 1 - 在 Visual Studio 中建立 Blazor 項目

選擇Blazor Server App項目類型:

Choose Blazor Project Type related to 步驟 1 - 在 Visual Studio 中建立 Blazor 項目

無需按F5鍵更改解決方案,直接執行應用程式。 依下列方式導覽至應用程式的Fetch data標籤:

First Run related to 步驟 1 - 在 Visual Studio 中建立 Blazor 項目

我們的目標是透過上傳按鈕將 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

您可以透過在任何專案中新增以下程式碼行,將 IronXL 直接新增到您的專案中。<ItemGroup>在解決方案的.csproj檔案中:

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

如圖所示,在 Visual Studio 中:

Add Ironxl Csproj related to 選項 2B - 在 csproj 檔案中新增 PackageReference

步驟 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 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());
        }
    }
}
$vbLabelText   $csharpLabel

概括

<InputFile>該元件允許您在此網頁上傳文件。 我們已將呼叫事件回調設定為呼叫OpenExcelFileFromDisk ,這是底部@code區塊中的非同步方法。 HTML程式碼會將您的Excel表格渲染成標籤頁上的表格。

IronXL.Excel 是一個獨立的 .NET 軟體庫,用於讀取各種電子表格格式。 它不需要安裝Microsoft Excel ,也不依賴 Interop。


延伸閱讀

Documentation related to 延伸閱讀

查看 API 參考

探索 IronXL 的 API 參考,其中概述了 IronXL 的所有功能、命名空間、類別、方法、欄位和枚舉的詳細資訊。

查看 API 參考

下載軟體產品。

常見問題解答

如何在 Blazor 伺服器端應用程式中讀取 Excel 檔案?

要在 Blazor 伺服器端應用程式中讀取 Excel 文件,可以使用 IronXL C# 庫。它允許您透過 NuGet 套件管理器輕鬆將其整合到 Blazor 專案中,然後編寫程式碼來讀取和顯示 Excel 資料。

如何設定 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 等 Excel 庫整合到 Blazor 專案中。

如果我的 Blazor 應用程式無法讀取 Excel 文件,我該採取哪些故障排除步驟?

請確保已透過 NuGet 正確安裝 IronXL,並且您的 Blazor 應用程式擁有從磁碟讀取檔案的必要權限。請仔細檢查 Excel 檔案路徑是否正確,以及 IronXL 是否支援該檔案格式。

柯蒂斯·週
技術撰稿人

Curtis Chau擁有卡爾頓大學電腦科學學士學位,專長於前端開發,精通Node.js、TypeScript、JavaScript和React。他熱衷於打造直覺美觀的使用者介面,喜歡使用現代框架,並擅長撰寫結構清晰、視覺效果出色的使用者手冊。

除了開發工作之外,柯蒂斯對物聯網 (IoT) 也抱有濃厚的興趣,致力於探索硬體和軟體整合的創新方法。閒暇時,他喜歡玩遊戲和製作 Discord 機器人,將他對科技的熱愛與創造力結合。

準備好開始了嗎?
Nuget 下載 1,802,965 | 版本: 2025.12 剛剛發布