向现有 OpenXML 电子表格添加页脚

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

编辑:我在原来的帖子中遗漏了更多细节。该程序使用模板流而不是“.Open”命令的具体模板。使用以下代码块初始化模板流:

public void Initialize(Stream templateStream)
{
    spreadsheet = SpreadsheetDocument.Open(templateStream, true);
}

我仍在研究这个问题,但是有人知道在 OpenXML 中使用 HeaderFooter 对象流的含义吗?

我是 OpenXML 新手,仍在阅读和学习这个庞大的 SDK 中的内容。我继承了一个 C# MVC.NET 程序,该程序使用 OpenXML 在 Excel 电子表格上显示信息,所有这些都正常工作,但我现在需要向同一个电子表格添加页脚,而我在 OpenXML 中遇到了一些障碍知识。

我将所需的页脚信息放入电子表格中,使用 Open XML SDK Productivity Tool 打开它,并在 <.x:oddFooter(OddFooter):

下找到此代码
 // Creates an OddFooter instance and adds its children.
        public OddFooter GenerateOddFooter()
        {
            OddFooter oddFooter1 = new OddFooter();
            oddFooter1.Text = "&L&\"Times New Roman,Regular\"Page &P of &N&C&\"Times New Roman,Regular\"Generated On: <Date/Time> Central&R&\"Times New Roman,Regular\"Report";
            return oddFooter1;
        }

此代码在 <>x:headerFooter(OddFooter) 下上一级:

// Creates an HeaderFooter instance and adds its children.
        public HeaderFooter GenerateHeaderFooter()
        {
            HeaderFooter headerFooter1 = new HeaderFooter();
            OddFooter oddFooter1 = new OddFooter();
            oddFooter1.Text = "&L&\"Times New Roman,Regular\"Page &P of &N&C&\"Times New Roman,Regular\"Generated On: <Date/Time> Central&R&\"Times New Roman,Regular\"Report";

            headerFooter1.Append(oddFooter1);
            return headerFooter1;
        }

现在我当然需要在某处附加页脚信息,这就是我陷入困境的地方。在 <>x:worksheet(Worksheet) 中我看到这行代码:

worksheet1.Append(headerFooter1);

这看起来很简单,但是当我回顾应用程序代码时,我发现没有要附加的工作表对象。我认为我已经接近以下代码行:

spreadsheet.WorkbookPart.Workbook.Append(headerFooter1);

但这没有任何结果。在应用程序中,我看到一个 SpreadsheetDocument 对象和对 OpenXMLParts 的引用...我是否需要获取要附加的电子表格部分?或者我是否需要对电子表格与工作表对象采取不同的方法?我需要具体化当前工作表然后追加吗?

我感觉这有一个简单的解决方案,但正如我所说,我仍在学习 SDK。

谢谢!

excel c#-4.0 openxml openxml-sdk
2个回答
0
投票

对于那些不了解生产力工具的人,它包含在 SDK 中,可以从 https://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=5124 下载

在我的64位机器上,该工具的安装路径是: “C:\Program Files (x86)\Open XML SDK\V2.0 ool\OpenXmlSdkTool.exe”

您应该能够手动向电子表格添加页脚,然后使用该工具将其打开,并查看创建整个电子表格(包括页脚)所需的确切 C# 代码。然后,您可以删除不需要的代码部分,例如自动添加的一些样式。


0
投票

2024 年 4 月更新:

如果您正在寻找 OpenXmlSdkTool.exe,链接已移至:

https://github.com/OfficeDev/Open-XML-SDK/releases/tag/v2.5

(下载并运行两个 MSI 文件)

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