在我们的文档生成系统中,我们使用DOCX文件,我们以编程方式填写合并域。为此,我使用的是OpenXml SDK 2.0。
我一直在使用de docx中的document.xml文件,发现合并域通常由SimpleField表示。我们使用的文档中的一个示例:
<w:fldSimple w:instr=" MERGEFIELD NP021_INSSNumber \* MERGEFORMAT "><w:r><w:rPr><w:noProof/></w:rPr><w:t>«NP021_INSSNumber»</w:t></w:r></w:fldSimple>
一种相当简单的表示法,包含mergefield命令和要在文档中显示的文本。在XML中找到这个标签相当容易,只需要搜索w:fldSimple标签。 (我删除了一些样式标签,使其更具可读性)
但最近在Word中创建的文档没有在我们的代码中解析,当我查看XML时,合并域的符号完全不同:
<w:instrText xml:space="preserve"> MERGEFIELD NP021_INSSNumber \* MERGEFORMAT </w:instrText>
稍后在文档中我找到了显示符号:<w:t>«NP021_INSSNumber»</w:t>
这在代码中解析是非常不可能的。
如何在Word中执行相同的操作可能会产生不同的结果,是否有办法确保Word将SimpleFields用作合并字段的XML表示法?
提前感谢您提供任何有用的信息。
答案 0 :(得分:2)
在传递之前我会考虑accepting revisions和simplifying the markup。
请注意,标记简化程序包含在Power Tools for Open XML。
中您可能会在Eric Whites blog postings找到更多有用的资料。