DOCX文件中合并域的不寻常XML表示法。

时间:2011-07-29 09:25:40

标签: .net openxml-sdk docx mergefield

在我们的文档生成系统中,我们使用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表示法?

提前感谢您提供任何有用的信息。

1 个答案:

答案 0 :(得分:2)

在传递之前我会考虑accepting revisionssimplifying the markup

请注意,标记简化程序包含在Power Tools for Open XML

您可能会在Eric Whites blog postings找到更多有用的资料。