跳過到頁腳內容
使用 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 試算表。

class="hsg-featured-snippet">

如何在 Razor Pages 中生成 Excel 文件

  1. 安裝 C# 庫以在 Razor 中生成 Excel 文件
  2. 訪問或在方法中創建一個新的 Excel 文件
  3. 在 Razor 中為 WorkBook 對象添加數據和樣式
  4. 使用 File 方法當按下按鈕時自動下載 Excel 文件
  5. 檢查生成的 Excel 文件

IronXL: C# Excel 函式庫

IronXL 是一個 C# 的 Excel 庫,提供了在大數據集上進行平行處理的方法和功能,以增強計算能力。 它很容易使用,因為不需要了解其內部工作,並支持 XLS 和 XLSX 文件。

IronXL 非常適合於導入、導出、創建 Excel 公式和辦公文檔,而不需要安裝 Microsoft Office。

了解如何在 Razor Pages 中使用 IronXL 導入和導出 Excel 文件。

在 Razor Pages 中生成 Excel 文件

要在 Razor Pages 中創建 Excel 表格,請先打開 Visual Studio,創建一個 ASP.NET Core Web Application,並安裝 IronXL。

先決條件

在 Razor Pages 中設置創建 Excel 文件需要:

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

安裝 IronXL 庫

使用 NuGet Package Manager Console 安裝 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");
}
Public Function OnPostExport() As FileResult
	' Create a new WorkBook with XLSX format
	Dim workBook As New WorkBook(IronXL.ExcelFileFormat.XLSX)
	' Create a new WorkSheet named "data"
	Dim workSheet As 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")
End Function
$vbLabelText   $csharpLabel

In this code, a new Excel WorkBook is created and contains one 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 設置為 "Export",允許應用程序在用戶點擊 "Generate Excel File!" 按鈕時將 Excel 文件導出到本地機器,觸發瀏覽器下載。

運行項目

運行項目,您將在瀏覽器中看到一個屏幕。 點擊綠色按鈕下載 Excel 文件。

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

點擊 "Generate Excel File!" 後,文件將被下載。

如何在 Razor Pages 上生成 Excel 文件,圖 2:IronXL 下載的文件 IronXL 下載的文件

打開生成的 Excel 文件

生成的 Excel 文件內容完美匹配代碼的輸出格式。 生成的 Excel 文件的快照顯示如下。

如何在 Razor Pages 上生成 Excel 文件,圖 3:IronXL 生成的文件 IronXL 生成的文件

IronXL 優於競爭者

IronXL 是在處理 XLS 和 XLSX 格式時的優秀工具,沒有像 NPOI 這樣的限制,後者因為基於 Java 而速度較慢,而 IronXL 是 C#。 在 ASP.NET Core 應用程式中生成大型/多個試算表時,選擇 IronXL 而不是 POI。

IronXL 允許在不安裝 Microsoft Office 的情況下創建和編輯 Excel 文件。與 Microsoft Interop 不同,IronXL 不需要調用 Microsoft Excel 的 ActiveX 進行 Excel 操作或導出。 它還允許將 CSV 文件導出為 Excel 格式。

IronXL also provides extensive features for interacting with Excel files, including converting between popular formats, inserting math functions, adding charts, and inserting images.

結論

本文展示了在 Razor Pages 使用 IronXL 生成 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 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。