在我们的文档生成系统中,我们使用 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 表示法?
提前感谢您提供任何有用的意见。