如何在 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 電子表格。
如何在 Razor Pages 中產生 Excel 文件
- 安裝 C# 庫以在 Razor 中產生 Excel 文件
- 以某種方式存取或建立新的 Excel 文件
- 在 Razor 中為WorkBook物件新增資料和樣式
- 使用"檔案"方法,在按下按鈕時自動下載 Excel 檔案。
- 檢查產生的 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 檔案需要以下設定:
- Visual Studio(最新版本)
- .NET Framework 6 或 7
- 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");
}這段程式碼建立了一個新的 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 建立表單,並將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 在 Razor Pages 中產生 Excel 文件,而無需 Microsoft Excel ActiveX,並且方便文件下載。
探索更多關於建立Excel檔案的教學。
常見問題解答
如何在不使用 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 應用程式的理想選擇。






