跳過到頁腳內容
使用 IRONXL

如何在 Razor Pages 上生成 Excel 文件

Razor Pages 提供了一種現代化的網頁建置方法。 在Razor Pages 中,渲染網頁的原始碼是用 C# 編寫的,而不是由伺服器端頁面產生的。

為了有效率地處理 Excel 文件,我們建議使用IronXL函式庫,而不是其他函式庫,例如 POI Java 專案 NPOI 套件(特別適用於 PowerPoint 文件)和 Office Interop。 IronXL 功能豐富、易於使用,無需 Microsoft Office,並且支援多個.NET版本。

本文示範如何使用IronXL C# 庫在Razor Pages 中產生和匯出帶有虛擬資料和行標題的 Excel 電子表格。

IronXL:C# Excel 函式庫

IronXL是一個 C# Excel 函式庫,它提供使用平行處理來提高運算能力的方法來操作大型資料集。 它使用方便,無需了解內部工作原理,並且支援 XLS 和 XLSX 檔案。

IronXL非常適合匯入、匯出、建立 Excel 公式和辦公室文檔,而無需安裝 Microsoft Office。

學習如何使用IronXL在Razor Pages 中匯入和匯出 Excel 檔案。

在Razor Pages 中產生 Excel 文件

要在Razor Pages 中建立 Excel 表格,首先開啟 Visual Studio,建立一個ASP.NET Core Web 應用程序,然後安裝IronXL。

先決條件

在Razor Pages 中建立 Excel 檔案需要以下設定:

  1. Visual Studio(最新版本)
  2. .NET Framework 6 或 7
  3. Visual Studio 中的.NET Core Web 應用程式

安裝IronXL庫

使用NuGet套件管理器控制台安裝IronXL 。 輸入以下命令,即可在.NET Core Web 應用程式中安裝該程式庫:

Install-Package IronXL.Excel

產生 Excel 文件的程式碼

以下是編寫程式碼的方法。 開啟 Pages 資料夾中的"Index.cs"文件,並新增以下方法:

public FileResult OnPostExport()
{
    // Create a new WorkBook with XLSX format
    WorkBook workBook = new WorkBook(IronXl.ExcelFileFormat.XLSX);
    // Create a new WorkSheet named "data"
    WorkSheet workSheet = workBook.CreateWorkSheet("data");

    // Add headers to the new worksheet
    workSheet["A1"].Value = "Product EN";
    workSheet["B1"].Value = "SKU";
    workSheet["C1"].Value = "Customer";

    // Make header text bold
    workSheet["A1:C1"].Style.Font.Bold = true;

    // Add dummy data to the worksheet
    workSheet["A2"].Value = "Iron Rods";
    workSheet["A3"].Value = "Mobile Phones";
    workSheet["A4"].Value = "Chargers";

    workSheet["B2"].Value = "105";
    workSheet["B3"].Value = "285";
    workSheet["B4"].Value = "301";

    workSheet["C2"].Value = "Adam";
    workSheet["C3"].Value = "Ellen";
    workSheet["C4"].Value = "Tom";

    // Convert the WorkBook to a byte array Stream for download
    return File(workBook.ToStream().ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Grid.xlsx");
}
public FileResult OnPostExport()
{
    // Create a new WorkBook with XLSX format
    WorkBook workBook = new WorkBook(IronXl.ExcelFileFormat.XLSX);
    // Create a new WorkSheet named "data"
    WorkSheet workSheet = workBook.CreateWorkSheet("data");

    // Add headers to the new worksheet
    workSheet["A1"].Value = "Product EN";
    workSheet["B1"].Value = "SKU";
    workSheet["C1"].Value = "Customer";

    // Make header text bold
    workSheet["A1:C1"].Style.Font.Bold = true;

    // Add dummy data to the worksheet
    workSheet["A2"].Value = "Iron Rods";
    workSheet["A3"].Value = "Mobile Phones";
    workSheet["A4"].Value = "Chargers";

    workSheet["B2"].Value = "105";
    workSheet["B3"].Value = "285";
    workSheet["B4"].Value = "301";

    workSheet["C2"].Value = "Adam";
    workSheet["C3"].Value = "Ellen";
    workSheet["C4"].Value = "Tom";

    // Convert the WorkBook to a byte array Stream for download
    return File(workBook.ToStream().ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Grid.xlsx");
}
$vbLabelText   $csharpLabel

在這段程式碼中,建立了一個新的 Excel WorkBook ,其中包含一個WorkSheet 。 表格中填入了虛擬數據,產生的檔案會以下列方式傳送到伺服器:

  • WorkBook 轉換為 Stream 以便下載為檔案。
  • MIME 類型已設定。
  • 已指定文件下載的名稱。

建立一個按鈕用於下載 Excel 文件

將"Index.cshtml"中的現有程式碼替換為以下程式碼:

@page
@model IndexModel
@{
    ViewData["Title"] = "Home page";
}

<div class="text-center">
    <h1 class="display-4">IronXL Generate Excel File</h1>
    <p class="m-5">IronXL is an Excel Library for C# that allows developers to read and edit Excel data from XLS and XLSX documents without using Microsoft.Office.Interop.Excel</p>
    <form method="post" asp-page-handler="Export">
        <button class="btn btn-success p-3">Generate Excel File!</button>
    </form>
</div>
@page
@model IndexModel
@{
    ViewData["Title"] = "Home page";
}

<div class="text-center">
    <h1 class="display-4">IronXL Generate Excel File</h1>
    <p class="m-5">IronXL is an Excel Library for C# that allows developers to read and edit Excel data from XLS and XLSX documents without using Microsoft.Office.Interop.Excel</p>
    <form method="post" asp-page-handler="Export">
        <button class="btn btn-success p-3">Generate Excel File!</button>
    </form>
</div>
HTML

此 HTML 建立一個表單,其中 asp-page-handler 設定為"匯出",使應用程式能夠在使用者點擊"產生 Excel 檔案!"按鈕時將 Excel 檔案匯出到本機計算機,從而觸發瀏覽器下載。

運行專案

運行該項目,您將在瀏覽器中看到一個畫面。 點選綠色按鈕下載Excel檔案。

如何在Razor Pages 上產生 Excel 文件,圖 1: IronXL產生 Excel 工作表 IronXL產生 Excel 表格

點擊"產生Excel檔案!"後,檔案將開始下載。

如何在Razor Pages 中產生 Excel 文件,圖 2: IronXL下載的檔案 IronXL下載文件

開啟生成的 Excel 文件

產生的 Excel 檔案內容與程式碼輸出完全一致,格式也完全正確。 下面顯示的是產生的 Excel 檔案的快照。

如何在Razor Pages 中產生 Excel 文件,圖 3: IronXL產生的文件 IronXL產生的文件

IronXL比競爭對手更勝一籌

IronXL是一款出色的工具,可以處理 XLS 和 XLSX 格式,沒有像 NPOI 那樣的限制。 NPOI 由於是基於 Java 的,速度較慢,而IronXL是 C# 編寫的。 在產生大型/多個電子表格的ASP.NET Core應用程式中,建議選擇IronXL而不是 POI。

IronXL允許在不使用 Microsoft Office 的情況下建立和編輯 Excel 檔案。與 Microsoft Interop 不同, IronXL不需要呼叫 Microsoft Excel 的 ActiveX 控制項來進行 Excel 操作或匯出。 它還允許將 CSV 檔案匯出為 Excel 格式。

IronXL也提供了與 Excel 檔案互動的豐富功能,包括常用格式之間的轉換插入數學函數、新增圖表和插入影像

結論

本文展示如何使用IronXL在Razor Pages 中產生 Excel 文件,而無需 Microsoft Excel ActiveX,並且方便文件下載。

探索更多關於建立Excel檔案的教學

IronXL對非商業開發免費。 提供免費試用版,可用於生產環境測試。 查看定價方案以了解更多定價和授權詳情。

常見問題解答

如何在 Razor 頁面中生成 Excel 文件,而無需使用 Interop?

您可以通過使用 IronXL 庫在 Razor 頁面中生成 Excel 文件,而無需使用 Interop。此庫允許您在 C# 中直接創建和操作 Excel 文件,無需 Microsoft Office,通過創建 WorkBook 並向 WorkSheet 添加數據。

安裝 IronXL 用於 Razor Pages 項目需要哪些步驟?

要在 Razor Pages 項目中安裝 IronXL,您可以使用 Visual Studio 中的 NuGet 套件管理器控制台。執行命令 Install-Package IronXL.Excel 以將庫添加到您的項目中。

我可以使用 IronXL 從 Razor Pages 應用程序導出數據嗎?

可以,IronXL 可以用來從 Razor Pages 應用程序導出數據。您可以將您的數據轉換為 Excel 格式,然後使用 Razor 頁面將該數據流回客戶端作為可下載文件。

使用 IronXL 生成 Excel 文件相較於使用 Microsoft Interop 有哪些優勢?

IronXL 相較於 Microsoft Interop 提供了許多優勢,包括更快的性能、不需要安裝 Microsoft Office,以及通過並行處理高效處理大數據集的能力。

使用 IronXL 是否可以在 Razor Pages 中處理大 Excel 數據集?

可以,IronXL 能夠高效處理大 Excel 數據集。它支持並行處理,可以在處理大量數據時提高性能和速度。

IronXL 是否支持不同的 Excel 文件格式?

IronXL 支持 XLS 和 XLSX 文件格式,允許全面的 Excel 文件操作,包括導入、導出和格式化數據。

IronXL 是否有免費選項用於開發使用?

IronXL 可免費用於非商業開發。免費試用適用於生產測試,有多種定價方案可供商業使用。

如何使用 IronXL 在 Razor Pages 中觸發 Excel 文件下載?

要使用 IronXL 在 Razor Pages 中觸發 Excel 文件下載,創建一個 WorkBook,填充數據,然後將其轉換為字節數組。使用 Razor Pages 的 File 方法將字節數組以可下載文件的形式流回用戶。

IronXL 相較於其他庫如 NPOI 有什麼優勢?

IronXL 通常比 NPOI 等庫更受青睞,因為它具有本地 C# 實現,提供更快的性能、易用性,並且不依賴於 Java 組件,這使其成為 ASP.NET Core 應用程序的理想選擇。

Jordi Bardia
軟體工程師
Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担產品测测试,產品開發和研究的责任時,Jordi 為持续的產品改進增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我