使用XML Schema和OpenXML SDK进行WordML模板化

Mat*_*ker 5 asp.net openxml wordml openxml-sdk

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

我在Google上发现的唯一类似的东西似乎是用带有所需数据的文本元素替换CustomXmlBlock元素.这似乎......凌乱而脆弱.

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

那么,有人可以指出我这样做的正确方向,或建议一个更好的方法来处理模板形式的字母?

Tod*_*ain 5

有很多选择:

  1. 您正在做什么,XSD架构映射.这是在Word 2003中引入的.它实际上只是在Word版本中真正活跃,因为当Word 2007问世时,首选的新表单形式变为#2.
  2. 内容控制.更多关于此的信息.
  3. 书签是真的和真实的.如果你有兴趣,有一篇文章在这里.

对于内容控件1,概念很简单:将内容控件包装在所需的层次结构中.也就是说,例如,有一个日期选择器内容控件和一个富文本内容控件,然后将它们分组.然后在Rich Text Content Control中放置一个组合框内容控件.Eric White 在Open XML WordprocessingML文档处理所有内容部件时从内容控件内部检索内容,撰写了一篇很好的入门文章.本文是一个更全面的内容控件介绍,它使用Open XML WordprocessingML文档作为数据源.

内容控制的更多链接:

  1. Brian Jones的网站上有很多很棒的文章.我相信这些是他的第一个:组装多个Word文档的简单方法,根据您自己的自定义XML创建一个丰富的Word文档(无需XSLT).
  2. 字内容控件工具包.可能是使用内容控件的最佳工具.
  3. 视觉如何内容.这里的许多文章都涉及内容控制.

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