2009-09-01 7 views
17

私は希望のレイアウトを含む "テンプレート" docx文書を持っていて、C#を使用してコンテンツを挿入したいが、文書の特定のセクション(段落や表など)を一意に指定する方法は見つけられません。 文書内の要素を一意に識別する最も良い方法は何ですか? ありがとう、 Matt Sharpe。テンプレートdocxドキュメントとOpen XML SDK 2.0(Aug 09)のコンテンツを置き換える方法は?

答えて

11

テンプレートの作成方法* .docxの一部としてロードされる基本XMLスキーマを使用していますか?または、デベロッパーリボンのコンテンツコントロールを使用している場合、各コントロールは特定のタグ名によって一意に識別されますか?これらのアプローチはどちらも、テーブルや段落の位置を制御できるように、ドキュメントの特定のセクションを簡単に識別できるようにします。

また、Open XML SDK 2.0(.NET 3.5を使用)を使用することを検討してください。 Open XMLドキュメントを開いて調べることができ、クリックした要素のコードを生成する方法を示す便利なDocument Reflectorツールが含まれています。

それとは別に、コンテンツコントロールの詳細を学ぶために、あなたはこれらの記事をチェックすることができます。

+0

乾杯、私はそれらのリンクを見ていきます。どうもありがとう。 –

3

文書変数/フィールドを使用できますか?単にInsert-> Quick Parts-> Fields-> Doc Variableに移動し、変数の名前を入力します。

例: http://www.codeproject.com/KB/office/Fill_Mergefields.aspx

また、単に「## insert_first_name ##」のようなプレースホルダーテキストの値を使用して、検索を行うと、これらの変数のために置き換えることができます。

例: http://geekswithblogs.net/DanBedassa/archive/2009/01/16/dynamically-generating-word-2007-.docx-documents-using-.net.aspx

+0

感謝。 DocVariableは興味深いように見え、潜在的にそれをテキストの部分に使用できます。ただし、一意に識別するテーブルの問題には対処しません。 –

3

私はあなたが
私は同じ目的のために、Excelで名前付き範囲を使用しました(リボンの[開発]タブ、コード例here上)のいずれかのブックマーク、またはコンテンツコントロールを探していると思います。

+0

ありがとうございます。私はリボンの開発者タブを見ています...そこには忘れていました;-) –

1

これを行うには、いくつかのオプションがあります。

タグで値を置き換える単純なオープンソースライブラリを作成しました。

たとえば、Hi {name}data={name:"John"}は、Hi Johnで置き換えられます。

ここにある: https://github.com/edi9999/docxtemplater

デモ:あなたの応答のためのhttp://javascript-ninja.fr/docxgenjs/examples/demo.html

+1

tanks @ edi9999 .docxでうまく動作しますが、.pptxと同じ問題があります。 – Massimo212121

+1

これはpptxでも動作します( 'PptxGen = require(" docxtemplater ")を使います)。PptxGen') – edi9999

+1

もう一度@ edi9999 woksとpptx :) – Massimo212121

関連する問題