跳至頁尾內容
使用 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 對非商業開發免費。 提供免費試用版,可用於生產環境測試。 查看定價方案以了解更多定價和授權詳情。

常見問題解答

如何在不使用 Interop 的情況下,在 Razor Pages 中產生 Excel 檔案?

您可以使用 IronXL 庫在 Razor Pages 中產生 Excel 文件,而無需使用 Interop。該程式庫可讓您直接在 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 將資料以可下載檔案的形式串流回用戶端。

與使用 Microsoft Interop 產生 Excel 檔案相比,使用 IronXL 有哪些優點?

IronXL 比 Microsoft Interop 具有多項優勢,包括更快的效能、無需安裝 Microsoft Office 以及透過並行處理高效處理大型資料集的能力。

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

是的,IronXL能夠有效率地處理大型Excel資料集。它支援並行處理,這可以提高處理海量資料時的效能和速度。

IronXL是否支援不同的Excel檔案格式?

IronXL 支援 XLS 和 XLSX 檔案格式,可對 Excel 檔案進行全面操作,包括匯入、匯出和格式化資料。

在開發過程中,有沒有免費使用 IronXL 的方案?

IronXL 可供非商業開發免費使用。我們提供免費試用版用於生產環境測試,並為商業用途提供多種定價方案。

如何使用 IronXL 在 Razor Pages 中觸發 Excel 檔案下載?

要在 Razor Pages 中使用 IronXL 觸發 Excel 檔案下載,請建立一個WorkBook ,填充數據,然後將其轉換為位元組數組。使用 Razor Pages 的File方法將該位元組陣列作為可下載檔案串流傳輸給使用者。

與 NPOI 等其他庫相比,IronXL 有哪些優勢使其成為更好選擇?

IronXL 由於其原生 C# 實現,性能更快、易於使用,並且不依賴 Java 元件,因此通常比 NPOI 等程式庫更受歡迎,使其成為 ASP.NET Core 應用程式的理想選擇。

喬迪·巴迪亞
軟體工程師
喬迪精通Python、C#和C++,除了在Iron Software運用這些技能外,他還從事遊戲程式設計。他參與產品測試、產品開發和研究等工作,為產品的持續改進做出了巨大貢獻。豐富的經驗讓他始終保持挑戰性和工作熱情,他表示這是他最喜歡在Iron Software工作的原因之一。喬迪在佛羅裡達州邁阿密長大,畢業於佛羅裡達大學,主修電腦科學和統計學。