【问题标题】:WordML templating with XML Schema and OpenXML SDK使用 XML Schema 和 OpenXML SDK 进行 WordML 模板
【发布时间】:2011-04-15 10:36:31
【问题描述】:

我正在尝试使用通过 OpenXML SDK 读入的 docx 作为 .Net Web 应用程序中的模板用于套用信函(基本上)。我有一个带有我想要的格式的 docx,用从 xsd 定义的 XML Schema 标记进行标记(无论它们被称为什么,对此的帮助都非常无用)。

我在 Google 上发现的唯一类似的东西似乎是将 CustomXmlBlock 元素替换为具有所需数据的文本元素。这看起来……凌乱而脆弱。

我还有一个额外的复杂性,即一些数据是分层的,有部分的元素,然后是那个部分的项目。这似乎完全打破了上述方法。

那么,有人可以为我指出正确的方向吗,或者建议一种更好的方法来处理模板套用信函?

【问题讨论】:

    标签: asp.net openxml openxml-sdk wordml


    【解决方案1】:

    有多种选择:

    1. 你在做什么,XSD Schema 映射。这是在 Word 2003 中引入的。它实际上只在该版本的 Word 中真正活跃,因为当 Word 2007 出现时,首选的新表单方法成为 #2。
    2. 内容控制。详情请参阅下文。
    3. 书签是经过验证和验证的。有兴趣的话,有文章here

    对于内容控件1,概念很简单:将内容控件包装在所需的层次结构中。也就是说,例如有一个Date Picker Content Control和一个Rich Text Content Control,然后将它们分组。然后在富文本内容控件中,放置一个组合框内容控件。 Eric White 写了一篇很棒的入门文章,从 Processing all Content Parts in an Open XML WordprocessingML Document 的 Content Controls 内部检索内容。本文在其链接Using Open XML WordprocessingML Documents as Data Sources 中对内容控件进行了更全面的介绍。

    有关内容控件的更多链接:

    1. Brian Jones 的网站上有很多很棒的文章。我相信这是他的第一个:The Easy Way to Assemble Multiple Word DocumentsCreate a rich Word document based on your own custom XML (without the need for XSLT)
    2. Word Content Control Toolkit。可能是使用内容控件的最佳工具。
    3. Visual How To Content。此处的许多文章都涉及内容控件。

    1要在 Word 客户端中手动使用内容控件,请从选项中启用“开发人员”功能区,然后插入内容控件并从左侧部分设置它们的属性开发者功能区中的控件组。

    【讨论】:

    • 哇,太好了,我什至不知道存在内容控件。我将接受这一点并奖励赏金,尽管我有一个问题,更像是一个确认。似乎没有对带有内容控件的任何类型的重复结构(表格、列表等)的内置支持。我假设我将富文本内容控件作为占位符放入文档中,然后使用 OpenXML sdk 生成表格或列表并将其设置为内容控件的内容?
    • @Matt S:我添加了一些额外的链接,这些链接也应该可以帮助您入门。有多种方法可以使用 Content Controls 进行中继器 - 一种是您提到的。另一种方法是使用构建块。另一种方法是与您提到的相反 - 放置一个只有标题行的表格,然后在单元格中创建填充有 CC 的行。也请查看 Word 内容控制工具包 - 在您变得更加熟悉之前,这将挽救您使用 CC 的生命。
    • @Matt S,这基本上是正确的。您需要一种方式来说明哪个内容控件是重复占位符。 dev.plutext.org/svn/docx4j/trunk/docx4j/sample-docs/databinding/… 建议一种方法来做到这一点。
    猜你喜欢
    • 2019-06-14
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    相关资源
    最近更新 更多