【问题标题】:Generating Word Documents with content contorls使用内容控件生成 Word 文档
【发布时间】:2015-03-03 06:29:49
【问题描述】:

我有一个 word 文档模板,它只在几个字段中发生变化。

记得用google-fu逛了一圈,发现可以绑定一个xml到内容控件,通过那个方法动态生成word文档。

不幸的是,我已经有一段时间没有重新审视这个特定的问题了,我只记得这个问题非常笨重且难以管理。

有没有更优雅的开源解决方案?还是有更好的方法?

【问题讨论】:

    标签: c# ms-word


    【解决方案1】:

    我认为将内容控制 XML 数据绑定描述为支持 Word 文档生成/自动化的一系列技术中的最新技术是公平的。

    内容控制数据绑定是在 Word 2007 中引入的,所以现在并不是那么新。当您进行文档自动化时,您通常还需要以下支持:

    • 有条件地包含/排除内容
    • 重复数据(例如表格行、列表项)

    通过内容控件可以实现上述两个方面,Microsoft 最近发布了对重复数据的专门支持。

    内容控制数据绑定不如旧方法脆弱,但如果您不喜欢 XML 和 XPath,您可能不会称其为优雅 :-)

    对 Word 进行“内嵌”的传统方法包括:

    • 字段:MERGEFIELD、表单字段或自定义字段
    • 书签的使用

    这些的一个问题是作者用户很容易错误地删除它们。另一个问题是开发人员在 XML 级别上使用它们并不容易(尽管通过 VBA 或 VSTO 可能没问题)。

    另一种方法是在文档表面包含魔术文本字符串,并且有各种工具可以做到这一点。这有一个初步的吸引力,但这样做的问题是,在文档表面上看起来像一个连续的文本字符串可以在 XML 级别进行拆分,因为:

    • 拼写/语法更正
    • rsid(在不同时间或由不同人进行的编辑)
    • 格式化(例如字体大小、外观变化)

    简而言之,是的,还有其他选择。选择你的毒药。

    【讨论】: