使用OpenXml SDK 2.0在word文档中插入表

时间:2012-11-20 15:46:52

标签: c# .net openxml openxml-sdk

我刚刚开始使用Visual Studio 2010(C#)中的OpenXML SDK 2.0。在使用COM自动化之前,我有自动化的办公程序,这很痛苦。

我有一个由我们的图形设计师制作的模板,它将为我的报告提供基础。为了自动化简单的事物(明文项目),我已经将内容控件添加到模板中,并将自定义XML部分绑定到doc。内容控制如下:

  • DAYCOUNT
  • AlternateJobTitle
  • 日期
  • SignatureName

制作模板副本后,我编辑内容控件并使用以下代码保存文件:

//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创建表的任何代码示例都假设您要将它附加到主文档部分的末尾。我想指定表格在模板中的位置,生成表格并将它们放在模板的指定区域中。这可能吗?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

有很多OpenXml创建问题。但如果您决定采用这种方式 - 答案是通用的 - 检查 OpenXml生产力工具。在我的电脑上可以找到“C:\ Program Files(x86)\ Open XML SDK \ V2.0 \ tool \ OpenXmlSdkTool.exe”。只需在MsWord文档中创建要使用OpenXml创建的文档,并使用此工具反映文档的代码。祝好运!

答案 1 :(得分:0)

如果你需要显示表数据,到目前为止,我发现最好的是http://worddocgenerator.codeplex.com/的Word文档生成器。