使用IRONXL

如何使用IronXL在Blazor中导出数据到Excel

更新 2024年一月29日
分享:

本教程将讲解如何在 Blazor Web 应用程序中,使用 IronXL 库生成和下载 Excel 文件中的数据,以吸引人的演示方式将数据导出为 Excel 文件。

IronXL: C# Excel 库

IronXL是一个 C# Excel 库,旨在处理 Excel 中最耗时、重复多次的任务。 IronXL.Excel 功能强大,甚至可以处理 Excel 中最复杂的问题。 它可以轻松处理庞大的数据集和大单元格,这对很多使用 Excel 工作的开发人员来说是一项艰巨的任务。 该库可帮助他们开发可读取和直接写入 Excel 数据的应用程序,而无需与 Microsoft Office 文件或 Windows 上的库进行对接。

IronXL 库可用于创建各种电子表格,如发票、费用报告或销售报告。 此外,它还可以通过自动执行合并复杂数据集等任务,帮助简化工作场所的数据分析或报告流程。 IronXL支持多种文件格式.

IronXL.Excel 的主要功能使开发人员无需 Microsoft Excel 即可创建、编辑、处理和读取 Excel 文件。 这意味着您无需在系统中安装 Microsoft Excel。 该功能为开发人员提供了各种可能性,简化了 Excel 数据在应用程序中的集成。 例如,开发人员可以从数据库中自动生成报告,并将其导出到 Excel 以方便分发。 有关用 C# 阅读 Excel 文件的详细指南,请参阅此内容C# 读取 Excel 文件教程。

using IronXL;

class Program
{
    static void Main()
    {
        License.LicenseKey = "License-Key;

        // Load an existing Excel file
        WorkBook workbook = WorkBook.Load("ExistingData.xlsx");
        WorkSheet sheet = workbook.DefaultWorkSheet;

        // For example, changing the sales value in cell C2
        if (sheet["C2"].IsEmpty == false)
        {
            double currentSales = sheet["C2"].DoubleValue;
            // Increase sales by 10%
            sheet["C2"].Value = currentSales * 1.10;
        }

        // Save the changes back to the same file or a new file
        workbook.SaveAs("UpdatedData.xlsx");
    }
}
using IronXL;

class Program
{
    static void Main()
    {
        License.LicenseKey = "License-Key;

        // Load an existing Excel file
        WorkBook workbook = WorkBook.Load("ExistingData.xlsx");
        WorkSheet sheet = workbook.DefaultWorkSheet;

        // For example, changing the sales value in cell C2
        if (sheet["C2"].IsEmpty == false)
        {
            double currentSales = sheet["C2"].DoubleValue;
            // Increase sales by 10%
            sheet["C2"].Value = currentSales * 1.10;
        }

        // Save the changes back to the same file or a new file
        workbook.SaveAs("UpdatedData.xlsx");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

从 Blazor 项目将数据导出到 Excel

让我们按照步骤从 Blazor Web 应用程序中创建 Excel 文件。

先决条件

要在 Blazor 服务器应用程序中导出 Excel 文件,有一些先决条件:

1.Visual Studio(最新版本)

  1. .NET Framework 6 或 7

  2. 在 Visual Studio 中运行 Blazor 服务器应用程序

  3. 稳定的互联网连接以安装 IronXL 库

安装 IronXL 库

现在,是使用 NuGet 包管理器控制台安装 IronXL 库的时候了。 打开 NuGet 包管理器控制台,并输入以下命令:

Install-Package IronXL.Excel

此命令将在应用程序中安装最新版本的 IronXL。

下载导出 Excel 文件的代码

安装 IronXL 后,在解决方案资源管理器的 "wwwroot "部分下创建一个名为 "js "的文件夹。 在 "js "文件夹中创建一个 JavaScript 文件,文件名为 "SaveAsFile.js",如下截图所示。

如何在 Blazor 中使用 IronXL 将数据导出到 Excel,图 1: js 文件夹

js 文件夹

现在,在 "SaveAsFile.js "文件中添加以下代码。该函数将以流的形式向用户返回生成的文件。

function saveAsFile(filename, byteBase64) {
    var link = document.createElement('a');
    link.download = filename;
    link.href = "data:application/octet-stream;base64," + byteBase64;
    document.body.appendChild(link); // Needed for Firefox link
    link.click();
    document.body.removeChild(link);
}
JAVASCRIPT

接下来,在"_Host.cshtml "文件中添加 "SaveAsFile.js "文件的相对路径。这将允许应用程序调用之前定义的 JavaScript 函数。

 <script src="~/js/SaveAsFile.js"></script>
 <script src="~/js/SaveAsFile.js"></script>
HTML

导出 Excel 文件的代码

在 Data 文件夹下创建一个名为 "ExcelExport.cs "的类。

如何在 Blazor 中使用 IronXL 将数据导出到 Excel,图 2:ExcelExport.cs

ExcelExport.cs

编写以下代码,用于在 "ExcelExport.cs "文件中导出数据。

using IronXL;
using Microsoft.JSInterop;
using System;

namespace Export_Excel_Blazor.Data
{
    public class ExcelExport
    {
        public void ExcelGenerate(IJSRuntime iJSRuntime)
        {
            byte [] fileContents;
            WorkBook xlsxWorkbook = WorkBook.Create(IronXL.ExcelFileFormat.XLSX);
            xlsxWorkbook.Metadata.Author = "IronXL";

            //Add a blank WorkSheet
            WorkSheet xlsxSheet = xlsxWorkbook.CreateWorkSheet("new_sheet");

            //Add data and styles to the new worksheet

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

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

            xlsxSheet ["A2"].Value = "Iron Rods";
            xlsxSheet ["A3"].Value = "Mobile Phones";
            xlsxSheet ["A4"].Value = "Chargers";

            xlsxSheet ["B2"].Value = "105";
            xlsxSheet ["B3"].Value = "285";
            xlsxSheet ["B4"].Value = "301";

            xlsxSheet ["C2"].Value = "Adam";
            xlsxSheet ["C3"].Value = "Ellen";
            xlsxSheet ["C4"].Value = "Tom";

            fileContents = xlsxWorkbook.ToByteArray();

            iJSRuntime.InvokeAsync<ExcelExport>(
                "saveAsFile",
                "GeneratedExcel.xlsx",
                Convert.ToBase64String(fileContents)
            );
        }
    }
}
using IronXL;
using Microsoft.JSInterop;
using System;

namespace Export_Excel_Blazor.Data
{
    public class ExcelExport
    {
        public void ExcelGenerate(IJSRuntime iJSRuntime)
        {
            byte [] fileContents;
            WorkBook xlsxWorkbook = WorkBook.Create(IronXL.ExcelFileFormat.XLSX);
            xlsxWorkbook.Metadata.Author = "IronXL";

            //Add a blank WorkSheet
            WorkSheet xlsxSheet = xlsxWorkbook.CreateWorkSheet("new_sheet");

            //Add data and styles to the new worksheet

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

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

            xlsxSheet ["A2"].Value = "Iron Rods";
            xlsxSheet ["A3"].Value = "Mobile Phones";
            xlsxSheet ["A4"].Value = "Chargers";

            xlsxSheet ["B2"].Value = "105";
            xlsxSheet ["B3"].Value = "285";
            xlsxSheet ["B4"].Value = "301";

            xlsxSheet ["C2"].Value = "Adam";
            xlsxSheet ["C3"].Value = "Ellen";
            xlsxSheet ["C4"].Value = "Tom";

            fileContents = xlsxWorkbook.ToByteArray();

            iJSRuntime.InvokeAsync<ExcelExport>(
                "saveAsFile",
                "GeneratedExcel.xlsx",
                Convert.ToBase64String(fileContents)
            );
        }
    }
}
Imports IronXL
Imports Microsoft.JSInterop
Imports System

Namespace Export_Excel_Blazor.Data
	Public Class ExcelExport
		Public Sub ExcelGenerate(ByVal iJSRuntime As IJSRuntime)
			Dim fileContents() As Byte
			Dim xlsxWorkbook As WorkBook = WorkBook.Create(IronXL.ExcelFileFormat.XLSX)
			xlsxWorkbook.Metadata.Author = "IronXL"

			'Add a blank WorkSheet
			Dim xlsxSheet As WorkSheet = xlsxWorkbook.CreateWorkSheet("new_sheet")

			'Add data and styles to the new worksheet

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

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

			xlsxSheet ("A2").Value = "Iron Rods"
			xlsxSheet ("A3").Value = "Mobile Phones"
			xlsxSheet ("A4").Value = "Chargers"

			xlsxSheet ("B2").Value = "105"
			xlsxSheet ("B3").Value = "285"
			xlsxSheet ("B4").Value = "301"

			xlsxSheet ("C2").Value = "Adam"
			xlsxSheet ("C3").Value = "Ellen"
			xlsxSheet ("C4").Value = "Tom"

			fileContents = xlsxWorkbook.ToByteArray()

			iJSRuntime.InvokeAsync(Of ExcelExport)("saveAsFile", "GeneratedExcel.xlsx", Convert.ToBase64String(fileContents))
		End Sub
	End Class
End Namespace
VB   C#

在上例中,IronXL 库创建了一个 Excel工作簿以 XLSX 格式提供。 IronXL 还支持 XLS 格式。 工作手册 "必须具有以下特点工作表新增。 下一步是在该表中填入虚拟数据。

然后,将整个 WorkBook 内容转换为字节数组,并触发 IJSRuntime 以下载文件,其中包含以下参数:JavaScript 函数名称、导出文件的文件名以及 WorkBook 的字节数组。

创建 Razor 组件

在 Pages 文件夹下创建一个名为 "ExportExcel.razor "的 Razor 组件。

如何在 Blazor 中使用 IronXL 将数据导出到 Excel,图 3:

ExcelExport.cs

接下来,用下面给出的代码替换 "ExportExcel.razor "的源代码。

@page "/export"
@using Export_Excel_Blazor.Data
@inject IJSRuntime JS

<h1>IronXL Export Excel File</h1>

<p>Intuitive C# & VB.NET Excel API & No need to install MS Office or Excel Interop</p>

<button class="btn btn-primary" @onclick="ExcelGeneration">Create Excel File</button>

@code {

    private void ExcelGeneration()
    {
        ExcelExport excelExport = new ExcelExport();
        excelExport.ExcelGenerate(JS);
    }
}
@page "/export"
@using Export_Excel_Blazor.Data
@inject IJSRuntime JS

<h1>IronXL Export Excel File</h1>

<p>Intuitive C# & VB.NET Excel API & No need to install MS Office or Excel Interop</p>

<button class="btn btn-primary" @onclick="ExcelGeneration">Create Excel File</button>

@code {

    private void ExcelGeneration()
    {
        ExcelExport excelExport = new ExcelExport();
        excelExport.ExcelGenerate(JS);
    }
}
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: @page "/export" using Export_Excel_Blazor.Data inject IJSRuntime JS <h1> IronXL Export Excel File</h1> <p> Intuitive C# & VB.NET Excel API & No need to install MS Office or Excel Interop</p> <button class="btn btn-primary" onclick="ExcelGeneration"> Create Excel File</button> @code
"btn btn-primary" onclick="ExcelGeneration"> Create Excel File</button> code
Private Friend page "/export" [using] Export_Excel_Blazor.Data inject IJSRuntime JS (Of h1) IronXL Export Excel File</h1> (Of p) Intuitive C# & VB.NET Excel API And No need [to] install MS Office [or] Excel Interop</p> <button Class="btn btn-primary" onclick

	Private Sub ExcelGeneration()
		Dim excelExport As New ExcelExport()
		excelExport.ExcelGenerate(JS)
	End Sub
End Class
VB   C#

在上述 HTML 代码中,创建一个具有指向 ExcelGeneration 函数的 onclick 属性的按钮。 然后,在 @code 部分内的 ExcelGeneration 函数中添加 C# 代码来处理导出功能。

添加导航链接

在 "NavMenu.razor "文件中添加以下代码。它将添加一个导航栏菜单,以到达 Excel 生成页面。

<li class="nav-item px-3">
    <NavLink class="nav-link" href="export">
        <span class="oi oi-list-rich" aria-hidden="true"></span> Export Excel
    </NavLink>
</li>
<li class="nav-item px-3">
    <NavLink class="nav-link" href="export">
        <span class="oi oi-list-rich" aria-hidden="true"></span> Export Excel
    </NavLink>
</li>
HTML

运行项目

最后,运行项目。 您将在浏览器中看到以下输出。 转到 "Export Excel "导航菜单,点击 "创建 Excel 文件 "按钮。

如何在 Blazor 中使用 IronXL 将数据导出到 Excel,图 4:ExportExcel.razor

ExportExcel.razor

该应用程序将把数据导出到 Excel 电子表格中,并将 XLSX 文件下载到您的机器上。

如何在 Blazor 中使用 IronXL 将数据导出到 Excel,图 5:下载 Excel

下载 Excel

生成 Excel 电子表格

这是生成的 Excel 文件的预览。

如何在 Blazor 中使用 IronXL 将数据导出到 Excel,图 6:生成的 Excel

生成的 Excel

摘要

本文经历了在 Blazor 应用程序中使用 IronXL 生成和导出 Excel 文件的过程。 IronXL for .NET 开发人员需要在软件中操作 Excel 文件,而无需在机器上安装 Microsoft Office,对于他们来说,IronXL 是一个很好的工具。IronXL 为在 .NET 中构建 Excel 文件提供了更快的方法。

IronXL 构建在 C# 语言之上,为在全球最流行的电子表格应用程序中构建交互式和高响应度的用户界面提供快速、简便的代码开发。 Microsoft Interop 是一个相对较慢的库,需要较复杂的编码。 Microsoft Interop 比 IronXL 慢,因为它需要使用 COM 来读写数据。 探索更多与 IronXL 相关的文章如何导出 Excel 文件控制 Excel 工作簿中单元格的显示方式。网格线图表管理,以及文本对齐方式、字体大小、颜色.

< 前一页
C# CSV解析器(分步骤)教程
下一步 >
如何在Razor Pages上生成Excel文件

准备开始了吗? 版本: 2024.11 刚刚发布

免费NuGet下载 总下载量: 1,086,940 查看许可证 >