1

私がやりたいことは、ドキュメントにいくつかの隠しマークを書き込むことができるようにすることです。これにより、ユーザーが情報を入力すると、ドキュメントの各部分をそれを囲むマークまたはセクションに従って処理できるようになります。私は.NETを使用していますが、何かアイデアはありますか? ありがとう

4

2 に答える 2

2

SdtElementsタグ、OpenXml Sdk およびWord 2007 Content Control Toolkitをご覧ください。

本質は次のとおりです。

  • テンプレートとなる Word 文書を作成する
  • Word で、 [開発] タブをオンにします。
  • [開発者] タブには、[コントロール] グループがあります。「Aa」をクリックして新しいコンテンツ タグを挿入し、「プロパティ」をクリックしてタグ エイリアスとデータを編集し、デザイン モードをオンにしてコンテンツ タグを表示します。

以下の手順は、アプリがドキュメントにバインドする XML を出力できる場合に適用されます。

  • Word コンテンツ コントロール ツールキットを開く
  • 作成したドキュメントを開く
  • 右側のパネルに xml を添付します。
  • コンテンツ タグをダブルクリックして、XPath バインディングを編集するか、ドラッグ アンド ドロップを使用します。そのためのWCCTマニュアルを参照してください

テンプレートを準備したら、実際のタスクに応じて、これらのコンテンツ タグを使用して次のような多くのことを行うことができます。

  • ドキュメント内のカスタム xml 部分を置き換えて、ユーザーがドキュメントを開いたときに表示されるデータを更新します
  • Wordで開かずにopenxml sdkを使用してデータを置き換える
  • テンプレートを使用してデータを収集する (可能ですが、信頼性が低く、推奨されません)
  • openxml sdk を介してコードからコンテンツ タグを削除および挿入する

コードでは、次のように OpenXmlSdk オブジェクトに対して LINQ クエリを使用して、コンテンツ タグを見つけることができます。

var contentTags = document.MainDocumentPart.Document.Body
                .Descendants<SdtElement>()
                .Where(x => x.SdtProperties.GetFirstChild<Tag>() != null && x.SdtProperties.GetFirstChild<DataBinding>() != null)
                .Select(x => x.SdtProperties.GetFirstChild<Tag>().Val.InnerText =="Whatever Tag you're looking for or other condition to match several")
                .ToList();
于 2013-02-18T17:20:25.440 に答える
0

ここまたはここで説明されているように、カスタム ドキュメント プロパティを使用できます。

于 2013-02-18T17:19:07.460 に答える