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 を調べたところ、mergefields の表記が完全に異なっていました。

<w:instrText xml:space="preserve"> MERGEFIELD  NP021_INSSNumber  \* MERGEFORMAT </w:instrText>

そして、ドキュメントの後半で、表示表記を見つけました。<w:t>«NP021_INSSNumber»</w:t> これは、コードで解析することは驚くほど不可能です。

Word で同じことを実行しても結果が異なる可能性があるのはどうしてですか? また、Word がマージフィールドの XML 表記として SimpleFields を使用するようにする方法はありますか?

有益なご意見をお寄せいただきありがとうございます。

4

1 に答える 1

2

解析する前に、リビジョンを受け入れてマークアップを単純化することを検討します。

MarkupSimplifier はPower Tools for Open XML に含まれていることに注意してください。

おそらく、 Eric White のブログ投稿で、より多くの有用な資料を見つけることができるでしょう。

于 2011-07-30T03:49:18.570 に答える