使用Office Open XML重复内容

时间:2010-10-04 22:34:45

标签: .net ms-word ms-office openxml office-2007

我一直在查看Office Open XML规范对文档的可能性。我特别感兴趣的是能够将自定义XML内容添加到文档并将其绑定到内容控件。我想知道是否有可能有重复的内容控制类型?

例如,假设我的.docx文件中有一些自定义XML,如下所示:

<Work>
  .
  .
  <People>
    <Person>
      <Name>Jane Doe</Name>
      <EmailAddress>jane@abc.com</EmailAddress>
    </Person>
    <Person>
      <Name>John Doe</Name>
      <EmailAddress>john@xyz.com</EmailAddress>
    </Person>
  </People>
</Work>

是否有任何重复内容控件(类似于ASP转发器)可用于生成类似于

的输出
  • Jane Doe(jane@abc.com)
  • John Doe(john@xyz.com)

如果没有类型的控件,我想我可以对word文档本身进行一些处理以生成列表。有没有人这样做并有一些有用的指示?

4 个答案:

答案 0 :(得分:3)

正如0xA3所说,没有像这样内置的内容,它将被WordprocessingML操纵。但是这里有一个从数据库中提取数据以创建多个条目的示例:Pushing Data from a Database into a Word Document

此外,关于数据绑定的主题,一般来说,这是一个很好的入门教程:Linking Word 2007 Content Controls to Custom XML

答案 1 :(得分:2)

使用Word 2013,内容控件有一些改进。包括重复内容控件。我没有测试过。

http://msdn.microsoft.com/en-us/library/office/jj889465.aspx#WordCC_RepeatingSection

使用Word 2007和2010,您必须执行一些额外的处理来创建具有内容控件的行,并将它们与生成的Xpath查询绑定。您可以查看以下视频。

http://www.microsoft.com/uk/msdn/screencasts/screencast/261/Office-Open-XML-Content-Controls-and-Repeating-Data-Part-1-of-3.aspx

答案 2 :(得分:0)

在Word 2007/2010中没有用于重复内容的内置内容控件。我想到了以下几种可能性:

  • 使用Open XML SDK以编程方式创建完整内容。但是没有数据绑定。
  • 使用Word的MailMerge功能显示多个类似的数据集。
  • 使用对重复内容有更好支持的InfoPath
  • 使用第三方解决方案,例如Windward Reports。

更新:Word 2013现在具有重复部分的内容控制。

答案 3 :(得分:0)

http://dev.plutext.org/svn/docx4j/trunk/docx4j/sample-docs/databinding/conventions.html提出了这样做的约定。您需要预处理docx以克隆内容控件n次;目前有通过Word宏或Java(docx4j)执行此操作的代码。