OpenXML:通过绑定创建可重用的内容控件

问题描述 投票:0回答:2

我需要将特定的 XML 附加到 Word 文档,以便元素将显示在正确的位置。我可以使用 OpenXML SDK 来完成此操作。

问题是我也希望能够定义已经绑定在某种模板中的内容控件,以便其他人可以创建 xml 将附加到的真实文档模板。好吧,不确定人们会理解我的意思,所以我会进一步解释。

可能有许多不同的文档模板将使用相同的 XML 数据以及相同的内容控件。该文档由其他人创建。

场景:由于一些更改(新布局或其他内容),一些不是程序员的人需要为常用信息创建一个新表单。这与 XML 信息无关,保持不变。

“某个家伙”的最佳解决方案是在 Word 中创建文档并将内容控件拖动到位(或类似的解决方案)。然后,当 XML 添加到文档中时,就不会出现问题了,因为内容控件已预先绑定。

现在有几点:

1) 内容控件可以预先绑定吗?如果路径中没有 XML,它不是会毫无问题地保持为空吗?

2) 由于 i4i 诉讼,像这样将内容控件绑定到 CustomXML 是否在 Word 的未来版本中仍然有效?

3)是否还有比这个更好的最佳解决方案?

提前致谢。

编辑:

更清楚一点。我不想创建具有一些名称来标识它们和数据绑定 xpath 的内容控件。然而此时,路上什么也没有。

另一位用户进来并创建一个表单,决定布局等,然后将内容控件添加到他想要信息的位置。

稍后使用新表格请求项目 X 的信息。因此,将获取该表单的副本,并将 CustomXML 添加到 Docx 文件中。现在,因为 XML 模式是预先已知的,并且在决定 CC 的路径时使用,所以此 XML 数据将绑定到内容控件。

data-binding ms-word openxml word-contentcontrol
2个回答
2
投票

一个不错的选择是使用 VSTO (Visual Studio for Office) 构建一组附加了预绑定代码的文档模板。这两篇文章为研究此类解决方案提供了一个良好的开端:

有两个线程讨论了一些细节:12

使用 VSTO 的好处之一是您可以挂钩 内容控制事件Word 2007 中的内容控制事件模型

如果 VSTO 不是一个选项,您可以随时查看 在不启动 Microsoft Office 的情况下将自定义 XML 部件添加到文档


1
投票

这应该非常简单。自定义控件不受 i4i 诉讼的影响,您可以使用每个控件中的 tag 属性来命名它们(警告 - 限制为 64 个字符)。

© www.soinside.com 2019 - 2024. All rights reserved.