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