如何在使用 ReportViewer 创建的 Excel 文件中添加元数据

问题描述 投票:0回答:1

在使用 ASP.NET Web Forms 开发的应用程序中,我使用 Microsoft ReportViewer 创建报告,并允许用户以 Excel 格式下载这些报告。但是,我想控制自动生成的 Excel 文件中包含的元数据(标题、作者、关键字等)。

我使用的.NET版本是.NET Framework 4.6.1。

我知道可以通过创建不同的导出按钮来解决此问题,但我希望将元数据包含在 ReportViewer 中的导出按钮创建的 Excel 文件中。

asp.net excel export reportviewer
1个回答
0
投票

要将元数据添加到使用 ReportViewer 生成的 Excel 文件中,您需要在生成后在 Excel 本身内操作文档属性。 ReportViewer 本身不支持将元数据直接添加到 Excel 格式的导出文件(例如作者、标题或关键字)。

但是,您可以按照以下步骤添加元数据:

1。使用 ReportViewer 生成 Excel 文件

使用 ReportViewer 生成报告并将其导出为 Excel,使用以下代码:

Warning[] warnings;
string[] streamIds;
string mimeType = string.Empty;
string encoding = string.Empty;
string extension = string.Empty;


byte[] bytes = reportViewer.LocalReport.Render(
    "EXCEL", null, out mimeType, out encoding, out extension,
    out streamIds, out warnings);

using (FileStream fs = new FileStream(@"C:\output\report.xlsx", FileMode.Create))
{
    fs.Write(bytes, 0, bytes.Length);
}

2。使用 Open XML SDK 库添加元数据

要在创建 Excel 文件后向其添加元数据,您可以使用 Microsoft 的 Open XML SDK 库。使用它,您可以打开生成的文件并添加所需的属性。

通过 NuGet 安装 Open XML SDK 库:

dotnet add package DocumentFormat.OpenXml --version 3.1.0

或:

Install-Package DocumentFormat.OpenXml

安装后,您可以使用以下代码添加元数据:

using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.CustomProperties;
using System.IO;

public void AddMetadataToExcel(string filePath)
{
    using (SpreadsheetDocument document = SpreadsheetDocument.Open(filePath, true))
    {
        var propertiesPart = document.PackageProperties;

        propertiesPart.Creator = "Author name";
        propertiesPart.Title = "Report Title";
        propertiesPart.Subject = "Report Subject";
        propertiesPart.Keywords = "keyword1, keyword2";
        propertiesPart.Description = "Excel file Description";
        propertiesPart.LastModifiedBy = "LastModifiedBy Name";
        propertiesPart.Revision = "1";
    }
}

3.生成文件后调用该方法

ReportViewer 生成 Excel 文件后,调用

AddMetadataToExcel
方法:

AddMetadataToExcel(@"C:\output\report.xlsx");

完成!

© www.soinside.com 2019 - 2024. All rights reserved.