3

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

提前感谢您提供任何有用的意见。

4

1 回答 1

2

我会考虑在解析之前接受修订简化标记。

请注意,MarkupSimplifier 包含在Power Tools for Open XML中。

您可能会在Eric Whites 的博客文章中找到更多有用的材料。

于 2011-07-30T03:49:18.570 回答