使用IRONXL

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

更新 2024年一月29日
分享:

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

IronXL:C# Excel 库

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

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

IronXL 的主要功能是让开发人员无需 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 网络应用程序中创建 Excel 文件。

先决条件

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

1.Visual Studio (最新版本)

  1. .NET Framework 6 或 7

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

4.稳定的互联网连接以安装 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 代码中,创建一个按钮,其 onclick 属性指向 ExcelGeneration 函数。然后,在 @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

摘要

本文介绍了使用 IronXL 在 Blazor 应用程序中生成和导出 Excel 文件的过程。IronXL 是.NET 开发人员在不安装 Microsoft Office 的情况下在软件中处理 Excel 文件的绝佳工具。IronXL为在.NET中创建Excel文件提供了更快的方法。

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

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

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

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