跳至页脚内容
使用 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");
}
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 那样的限制。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 对非商业开发免费。 提供免费试用版,可用于生产环境测试。 查看定价方案了解更多定价和许可详情。

常见问题解答

如何在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将该数据流回客户端作为可下载文件。

使用IronXL而非Microsoft Interop生成Excel文件的好处是什么?

与Microsoft Interop相比,IronXL具有几个优势,包括更快的性能,无需安装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 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。