我刚开始使用 Visual Studio 2010 (C#) 中的 OpenXML SDK 2.0。在使用 COM 自动化之前,我有自动化办公程序,这很痛苦。
我有一个由我们的一位平面设计师制作的模板,它将为我的报告奠定基础。为了自动化简单的事情(纯文本项),我在模板中添加了内容控件并将自定义 XML 部分绑定到文档。内容控件如下:
- 天数
- 替代职务
- 日期
- 签名名称
复制模板后,我编辑内容控件并使用以下代码保存文件:
//stand up object that reads the Word doc package
using (WordprocessingDocument doc = WordprocessingDocument.Open(docOutputPath, true))
{
//create XML string matching custom XML part
string newXml = "<root>" +
"<DayCount>42</DayCount>" +
"<AlternateJobTitle>Supervisor</AlternateJobTitle>" +
"<Date>9/24/2012</Date>" +
"<SignatureName>John Doe</SignatureName>" +
"</root>";
MainDocumentPart main = doc.MainDocumentPart;
main.DeleteParts<CustomXmlPart>(main.CustomXmlParts);
//add and write new XML part
CustomXmlPart customXml = main.AddCustomXmlPart(CustomXmlPartType.CustomXml);
using (StreamWriter ts = new StreamWriter(customXml.GetStream()))
{
ts.Write(newXml);
}
}
这一切都很好。但是,我的文档不仅仅由标准文本和纯文本更新组成。报告的真正内容在于许多表格,这些表格也需要添加到每个报告中。我一直在疯狂地寻找有关如何完成此操作的良好描述,但实际上没有找到任何东西。是否有某种方法可以使用与纯文本控件相同的内容控制逻辑来描述放置表格的位置?我发现的使用 OpenXML 创建表的任何代码示例都假设您希望将其附加到主文档部分的末尾。我想指定表格需要在模板中的位置,生成表格并将它们放置在模板的指定区域中。这可能吗?
任何帮助是极大的赞赏。