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