0

编辑:我在原始帖子中遗漏了更多细节。该程序使用模板流而不是“.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。

谢谢!

4

1 回答 1

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\tool\OpenXmlSdkTool.exe”

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

于 2012-05-10T19:21:58.847 回答