web-dev-qa-db-ja.com

Word 2010でSQLデータベースからデータを取得する方法は?

Word文書にMSSQLデータベースのデータを入力したいと思います。

これは可能ですか、もしそうならどのように?

9
jorrebor

私は過去にさまざまな方法でそれを行いました。これは、ユーザーがMicrosoftWordの外部からアクションを開始するかMicrosoftWordの内部からアクションを開始するかによって異なります。

[〜#〜] inside [〜#〜]Microsoft Wordから、次のいずれかの手法を使用できます。

  1. プレースホルダーを使用してテンプレートを開き、VBAまたはVSTOを使用して、コピー&ペーストを使用したデータソースを使用してそれらを反復処理します。ここでもテーブルは犯罪であることに注意してください。このアプローチは、以下の「OUTSIDE」のアプローチ1に似ています。比較的遅い(コピー&ペースト)こと、およびMicrosoftWordのオートコレクトが最も必要のないときに開始することを好むという欠点。
  2. プレースホルダーを使用してテンプレートを開き、VBAまたはVSTOを使用してXML表現を解析してから、これらを置き換えます。高速ですが、書くのは難しいです。特に、XML表現にはプレースホルダー内にXMLフラグメントを含めることができるため(「&amp;lt;&amp;lt;PUT_<xxx/>IT_HERE&amp;gt;&amp;gt;」やより複雑なケースなど)。また、有効なXMLドキュメントを維持し、バランスが取れていることを確認する必要があります。

[〜#〜] outside [〜#〜]Microsoft Word(Webインターフェイスなど)から、次のいずれかの手法を使用できます。

  1. RTF(Word自体の構造よりもはるかに簡単に処理できます)を使用して、テンプレートをどこかに保存します。「&lt;&lt;PLACEHOLDER-FOR-NAME&gt;&gt;」または同様の認識しやすいテキストを、置き換えたい場所に配置します。 Word文書を要求し、RTFをフェッチし、データをフェッチし、プレースホルダーを置き換えます。サーバーRTF touser。RTFにはいくつかの制限がありますが、いくつかの利点があります。利点新しいテンプレートの作成が簡単で、Microsoft Wordpadやその他のOfficeパッケージでも機能します。欠点は、テーブルが処理が非常に面倒であり、すべてのMicrosoftWord構造が可能であるとは限らないことです。テーブル内で行を繰り返すことはさらに推奨されません。問題になる可能性があります。
  2. たまたまdocx、doc、またはRTFドキュメントを出力するレポートパッケージを使用します。レポートを作成します。一般に、大量の場合に最適です。エンドユーザーに大量の入力をさせたい場合はあまり適していませんレポートパッケージは通常、フローテキストではなくページに基づいて機能するため、明示的または暗黙的なページ区切りが挿入されることがあります。ただし、エンドユーザーが1つまたは2つの文を追加するだけでよい場合は、それで十分です。
  3. ファットクライアント。 SQLデータをどこかに置きます。 Wordを開きます。データを読み、INSIDE MicrosoftWordからのさらなるテクニックを参照してください。

SQL Server(または他のデータベースやデータプラットフォーム)からWord文書を入力する必要がある場合は、 データベースからWord文書を入力するための便利な構成 の無料版を提案できます(私はその製品に関わってきました)。テンプレートを開き、Word内からそれらをマージしますが、開発者以外を対象としています。テンプレートとデータブロック(ネストされている可能性があります)を指定して公開するだけです。開発者は、プラグインに一部のC#のみを追加できます。テンプレートがたくさんある(50以上)場合は、スケーリングが簡単なので、良い製品だと思います。

5
Guido Leenders

Microsoft Queryを使用して、SQLデータベースからドキュメントにデータをフェッチできます。このビデオは役立つ場合があります https://vimeo.com/83983247

3
savinson