私たちのドキュメント生成システムでは、DOCXファイルを使用してプログラムでマージフィールドを記入します。このために私はOpenXml SDK 2.0を使用しています。DOCXファイル内のmergefieldsの珍しいXML表記法。
私はdoc.xmlのdocument.xmlファイルを調べており、通常、mergefieldsはSimpleFieldで表されていることがわかりました。ドキュメントからの例では、我々は、使用します。MERGEFIELDコマンドやテキストを含む
<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>
かなり単純な表記法は、ドキュメントに表示されます。 XMLでこのタグを見つけるのは簡単ですが、w:fldSimpleタグを検索するだけです。
(私はそれを読みやすくするためにいくつかのスタイルのタグを削除)。しかし、最近、Wordで作成した文書は、当社のコードで解析しませんでした、と私はXMLで見たときMERGEFIELDSのための表記法は全く異なっていた:
<w:instrText xml:space="preserve"> MERGEFIELD NP021_INSSNumber \* MERGEFORMAT </w:instrText>
文書の後ろに私は表示表記を見つけました:<w:t>«NP021_INSSNumber»</w:t>
これはコードでは解析が不可能です。
Wordで同じことを行うと、異なる結果が生じる可能性があります。また、WordでSimpleFieldsをXML記法として使用する方法はありますか。
ご協力いただきありがとうございます。
同じ問題が発生していて、RevisionAcceptorを試してマークアップを単純化しても問題が解決しません。私のマージフィールドは、instrTextとしてそのまま残り、fldSimpleに変換されません。他に誰もこれを見たことがありますか?この問題をどうやって解決しましたか? – Lav