使用IRONXL

如何在Razor Pages上生成Excel文件

里根普恩
里根普恩
2022年11月14日
已更新 2024年1月29日
分享:

介紹

Razor Pages 是一種建立網頁的新方法。 使用 Razor Pages,呈現網頁的源代碼是用 C# 編寫的,而不是由伺服器端頁面生成的。

為了高效處理 Excel 文件,建議使用 IronXL 庫,相較於 POI Java project 的 NPOI package(也可用於處理 PowerPoint 文件)和 Office Interop,IronXL 提供了一個功能豐富且簡單易用的庫,無需安裝 Microsoft Office。此外,這個庫應該支持多個 .NET 版本。

本文將演示如何使用 IronXL C# 程式庫在 Razor Pages(Page model)中生成和匯出包含虛擬數據和行標題的 Excel 試算表。

IronXL: C# Excel 程式庫

IronXL 是一個 C# Excel 函式庫,提供用於操作大型數據集的方法和功能。 它利用平行處理來獲得更多的計算能力。 對程式設計師來說,這很容易使用,因為它不需要了解過程幕後的運作方式。 它支持 XLS 以及 XLSX 文件。

IronXL 亦支援匯入和匯出 Excel 檔案,以及建立 Excel 公式和辦公室文件。 這是那些不想在電腦上安裝 Microsoft Office 的完美解決方案。

讓我們看看如何在 Razor Pages 中使用 IronXL 匯入和匯出 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 套件管理器主控台安裝它。 打開控制台並輸入以下命令以在 .NET Core Web 應用程序中安裝 IronXL 庫。

Install-Package IronXL.Excel

生成 Excel 文件的程式碼

現在,是時候編寫代碼了。 從 Pages 資料夾中打開 "Index.cs" 檔案,並添加以下方法:

public FileResult OnPostExport()
{
    WorkBook workBook = new WorkBook(IronXL.ExcelFileFormat.XLSX);
    WorkSheet workSheet = workBook.CreateWorkSheet("data");

    //Add data and styles to the new worksheet

    workSheet ["A1"].Value = "Product EN";
    workSheet ["B1"].Value = "SKU";
    workSheet ["C1"].Value = "Customer";

    workSheet ["A1:C1"].Style.Font.Bold = true;

    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";

    return File(workBook.ToStream().ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Grid.xlsx");
}
public FileResult OnPostExport()
{
    WorkBook workBook = new WorkBook(IronXL.ExcelFileFormat.XLSX);
    WorkSheet workSheet = workBook.CreateWorkSheet("data");

    //Add data and styles to the new worksheet

    workSheet ["A1"].Value = "Product EN";
    workSheet ["B1"].Value = "SKU";
    workSheet ["C1"].Value = "Customer";

    workSheet ["A1:C1"].Style.Font.Bold = true;

    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";

    return File(workBook.ToStream().ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Grid.xlsx");
}
Public Function OnPostExport() As FileResult
	Dim workBook As New WorkBook(IronXL.ExcelFileFormat.XLSX)
	Dim workSheet As WorkSheet = workBook.CreateWorkSheet("data")

	'Add data and styles to the new worksheet

	workSheet ("A1").Value = "Product EN"
	workSheet ("B1").Value = "SKU"
	workSheet ("C1").Value = "Customer"

	workSheet ("A1:C1").Style.Font.Bold = True

	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"

	Return File(workBook.ToStream().ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Grid.xlsx")
End Function
$vbLabelText   $csharpLabel

在上述代碼中,創建了一個新的 Excel WorkBook,其中包含一個 WorkSheet。 接著,工作表會填充虛擬數據,並在伺服器回應中返回生成的文件,具有以下參數:

  • WorkBook 轉換為 Stream(因為在下載之前將檔案轉換為流很重要)。
  • 設置數據類型
  • 指定文件下載的名稱。

創建一個按鈕以下載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# and 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# and 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"。 這將使應用程式能夠將 Excel 文件匯出到本機。此外,創建一個按鈕,標籤為「生成 Excel 文件!」。 當使用者點擊此按鈕時,將觸發瀏覽器下載生成的 Excel 文件。

執行專案

現在執行專案,您將在瀏覽器中看到以下畫面。 點擊綠色按鈕以下載 Excel 文件。

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

IronXL 生成 Excel 工作表

當您點擊「Generate Excel File!」按鈕時,您會在底部看到下載的文件。

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

IronXL 下載的檔案

打開生成的 Excel 檔案

生成的 Excel 文件中的內容與程式碼中所寫的一致,且格式完美。 您可以在下方看到產生的 Excel 檔案的快照。

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

IronXL 生成的文件

IronXL 優於競爭對手

IronXL 庫是一個更強大的工具,可用於處理 Excel,支援 XLS 和 XLSX,且不具有 NPOI 的限制。 NPOI 相較於 IronXL 來說運行得更慢,因為它是用 Java 而不是 C# 編寫的。 因此,當您想在ASP.NET Core 應用程式中生成大型/多個電子表格時,您會選擇使用IronXL而非POI。

IronXL 是一個很棒的庫,用於在不使用 Microsoft Office 的情況下創建和編輯 Excel 文件。與 Microsoft Interop 不同,IronXL 不需要在背景中調用 Microsoft Excel 的 ActiveX 即可執行 Excel 操作和匯出到 Excel。 IronXL 可以在不使用 Microsoft Office 套件的情況下運行。IronXL 也可以將 CSV 檔案匯出為 Excel 格式。

此外,IronXL還提供了多種功能來與Excel文件互動,包括在流行格式之間進行轉換插入數學函數,甚至添加圖表和插入圖片

結論

本文介紹了如何在 Razor Pages 中使用 IronXL 生成 Excel 文件,而無需調用 Microsoft Excel ActiveX 並下載文件。

請造訪以下連結以獲取更多有關建立 Excel 檔案的教程

IronXL 可免費用於非商業開發目的。 可用於生產測試的免費試用。 查看價格方案以獲取有關價格和許可的更多詳細資訊。

里根普恩
軟體工程師
Regan 畢業於雷丁大學,擁有電子工程學士學位。在加入 Iron Software 之前,他的工作角色讓他專注於單一任務;而他在 Iron Software 工作中最喜歡的是他所能承擔的工作範圍,無論是增加銷售價值、技術支持、產品開發或市場營銷。他喜歡了解開發人員如何使用 Iron Software 庫,並利用這些知識不斷改進文檔和開發產品。
< 上一頁
如何使用IronXL將數據匯出至Blazor中的Excel
下一個 >
如何在 C# 中使用 CSV 解析器