跳至頁尾內容
USING 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。

學習如何在 Razor Pages 中使用 IronXL 導入和匯出 Excel 文件。

在 Razor Pages 中生成 Excel 文件

要在 Razor Pages 中建立 Excel 試算表,請先打開 Visual Studio,建立一個 ASP.NET Core 網頁應用程式,並安裝 IronXL。

前提條件

設置在 Razor Pages 中生成 Excel 文件需要:

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

安裝 IronXL 程式庫

using NuGet 封裝管理器控制台安裝 IronXL。 輸入此命令以在 .NET Core 網頁應用程式中安裝程式庫:

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

在此程式碼中,建立了一個新的 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 那樣的限制,後者因為基於 Java 而速度較慢,IronXL 是 C#。 在 ASP.NET Core 應用程式中生成大型/多個試算表時,選擇 IronXL 而不是 POI。

IronXL 允許建立和編輯 Excel 文件,無需 Microsoft Office。不像 Microsoft Interop,IronXL 不需要調用 Microsoft Excel 的 ActiveX 進行 Excel 操作或匯出。 它還允許將 CSV 文件匯出為 Excel 格式。

IronXL 還提供了豐富的功能來與 Excel 文件交互,包括 在流行格式間轉換插入數學函式、新增圖表以及 插入圖片

結論

本文展示了在 Razor Pages 中使用 IronXL 生成 Excel 文件,無需 Microsoft Excel ActiveX 並協助文件下載。

探索更多 建立 Excel 文件的教程

IronXL 免費用於非商業開發。 有一個免費試用可用於生產測試。 查看 定價計劃 以獲取更多定價和授權細節。

常見問題

如何在 Razor Pages 中不使用 Interop 生成 Excel 文件?

您可以通過使用 IronXL 程式庫在 Razor Pages 中不使用 Interop 生成 Excel 文件。此程式庫使您可以直接在 C# 中建立和操作 Excel 文件,而無需安裝 Microsoft Office,方法是建立 WorkBook 並將資料新增到 WorkSheet。

在 Razor Pages 專案中安裝 IronXL 涉及哪些步驟?

要在 Razor Pages 專案中安裝 IronXL,您可以在 Visual Studio 中使用 NuGet 封裝管理器控制台。執行命令 Install-Package IronXL.Excel 將程式庫新增到您的專案中。

我可以使用 IronXL 從 Razor Pages 應用程式中導出資料嗎?

是的,可以使用 IronXL 從 Razor Pages 應用程式中導出資料。您可以將資料轉換為 Excel 格式,然後使用 Razor Pages 將該資料流式傳輸回客戶端作為可下載文件。

using IronXL 生成 Excel 文件比使用 Microsoft Interop 有哪些優勢?

IronXL 比 Microsoft Interop 提供了幾種優勢,包括更快的性能、無需安裝 Microsoft Office,以及通過並行處理高效地處理大型資料集的能力。

可以在 Razor Pages 中使用 IronXL 處理大型 Excel 資料集嗎?

是的,IronXL 能夠高效地處理大型 Excel 資料集。它支持並行處理,可以在處理大量資料時提高性能和速度。

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

IronXL 支持 XLS 和 XLSX 文件格式,允許對 Excel 文件進行全面操作,包括導入、導出和格式化資料。

IronXL 在開發中有免費的選擇嗎?

IronXL 可自由用於非商業開發。提供免費試用以進行生產測試,商業用途有不同的定價方案。

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

要在 Razor Pages 中使用 IronXL 觸發 Excel 文件下載,需建立 WorkBook,並填充資料,然後將其轉換為位元組陣列。使用 Razor Pages 的 File 方法將位元組陣列作為可下載文件流式傳輸給使用者。

IronXL 相較於像 NPOI 這樣的程式庫有什麼優勢?

IronXL 通常比 NPOI 程式庫更受青睞,因為它是原生 C# 實現,提供更快的性能、易於使用,而且不依賴於 Java 組件,這使得它非常適合 ASP.NET Core 應用程式。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

Iron 支援團隊

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