我正在尝试使用MergeFields从模板生成应用程序的MS Word输出。我正在使用this CodeProject page中的代码和C#中的DocumentFormat.OpenXml.2.5库。
我已经从docx ZIP打开了document.xml,我看到了构成合并字段的五个Runs()的序列(参见下面的处理之前)。 CodeProject页面中的代码按照它的说法执行,并用文本运行替换合并字段(参见下面的After processing)。
我的麻烦是,当我在Word中保存并打开该docx时,我看不到被替换文本的任何部分。我一直在挠头,但一直无法弄清楚出了什么问题。有人可以提供一些建议吗?提前谢谢!
处理前:
<w:r w:rsidR="00314F5B">
<w:rPr>
<w:sz w:val="22"/>
<w:szCs w:val="22"/>
</w:rPr>
<w:fldChar w:fldCharType="begin"/>
</w:r>
<w:r w:rsidR="00314F5B">
<w:rPr>
<w:sz w:val="22"/>
<w:szCs w:val="22"/>
</w:rPr>
<w:instrText xml:space="preserve"> MERGEFIELD MyApp.PatientFirstName \* MERGEFORMAT </w:instrText>
</w:r>
<w:r w:rsidR="00314F5B">
<w:rPr>
<w:sz w:val="22"/>
<w:szCs w:val="22"/>
</w:rPr>
<w:fldChar w:fldCharType="separate"/>
</w:r>
<w:r w:rsidR="00314F5B">
<w:rPr>
<w:noProof/>
<w:sz w:val="22"/>
<w:szCs w:val="22"/>
</w:rPr>
<w:t>«MyApp.PatientFirstName»</w:t>
</w:r>
<w:r w:rsidR="00314F5B">
<w:rPr>
<w:sz w:val="22"/>
<w:szCs w:val="22"/>
</w:rPr>
<w:fldChar w:fldCharType="end"/>
</w:r>
处理完毕后:
<w:r w:rsidR="00314F5B">
<w:rPr>
<w:sz w:val="22" />
<w:szCs w:val="22" />
</w:rPr>
<w:r>
<w:t>First</w:t>
</w:r>
</w:r>