编辑:我在原帖中遗漏了更多详细信息。该程序使用模板流而不是具体的模板用于" .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;
}
此代码在&lt;&gt; 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;
}
现在我当然需要在某处附加页脚信息,这就是我被困的地方。在&lt;&gt; x:工作表(工作表)中,我看到了这行代码:
worksheet1.Append(headerFooter1);
这看起来很简单,但是当我回顾应用程序代码时,我发现没有要附加的工作表对象。我以为我接近以下代码行:
spreadsheet.WorkbookPart.Workbook.Append(headerFooter1);
但这没有任何结果。在应用程序中,我看到一个SpreadsheetDocument对象和对OpenXMLParts的引用...我是否需要将电子表格部件附加到?或者我是否需要采用不同的方法使用电子表格而不是工作表对象?我是否需要实现当前工作表然后追加?
我觉得这有一个简单的解决方案,但正如我所说,我还在学习SDK。
谢谢!
答案 0 :(得分: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#,包括页脚。然后,您可以删除不必要的代码部分,例如一些自动添加的样式。