2012-11-20 84 views
1

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

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

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

任何帮助,非常感谢。

回答

0

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

相关问题