6

Microsoft Word で報告したいデータを保存するデータベース アプリケーションがあります。

顧客のすべての情報がデータベース システムに保存されており、顧客に送信されるレポートである何百ものワード レターを作成するように求められているとします。これらの手紙は内容は同じですが、お客様の名前、お客様の住所などが異なります。

このテンプレートのコンテンツを置き換えるデータベースとして c# と .Net、SQL を使用してコンテンツ コントロールを含むドキュメント テンプレートを作成することにより、Office Word 2010 を利用したいと考えています。

C# と dot net と sql で Word 2010 を自動化する記事を探していました。誰かが私に正しい方向へのプッシュを与えることができますか?

4

8 に答える 8

1

同じ理由で、OpenXMLSDKが良い方法であることに同意します。私はあなたと同じような種類のレポート生成を作成している最中です。残念ながら、生成する必要のあるレポートは、データだけでなくレイアウトでも非常に動的です。

レイアウトを変更する必要がない場合は、SDKツールを使用することを強くお勧めします。SDKツールを使用すると、任意の単語ドキュメントを取得してc#コードを生成し、まったく同じドキュメントを再作成できます。その時点から、あなたがしなければならないのは、テキストをコードで必要なデータに置き換えることだけです。一般的なレポートを単語で作成し、ツールを使用してコードを取得してから、コード内のプレースホルダーテキストを検索し、その文字列を変数に置き換えることができます。text1.text=reportDataと同じくらい簡単です。

また、SDKツールはコードを学習するための優れた方法だと思います。2つのファイルを並べて比較し、コード内での違いを確認できます。

于 2013-01-25T13:50:50.460 に答える
1

Microsoft は、サーバー プロセスで実行されるすべてのアプリケーションに OpenXml を推奨しています。このアプローチは、おそらく依存関係を減らすための最良の方法の 1 つです (他の人が述べているように)。開始するためのリンクを次に示します。

OpenXml SDK 2.0 をダウンロード: http://www.microsoft.com/en-au/download/details.aspx?id=5124

役立つチュートリアル: http://msdn.microsoft.com/en-us/library/ff478255.aspx

于 2013-01-25T03:21:37.453 に答える
1

まず、相互運用を使用しないでください。私は過去 4 年間それを使用してきましたが、それは良い考えではないと伝えなければなりません (実際には失われており、多くの問題に遭遇するでしょう。実際には、Microsoft のサーバー側の生成には使用しないでください。

OpenXML SDK を使用する必要があります。実際に使い始めたばかりですが、少し使いにくいように見えても、interop を使用するよりもはるかに高速であると言わざるを得ません。 OfficeスイートのプログラムをPCにインストールする必要があります。欠点は、サードパーティのライブラリがないとPDFまたはXPSにエクスポートできないことです

SDK は http://www.microsoft.com/en-us/download/details.aspx?id=30425にあります。

ツールもダウンロードすることをお勧めします。これは非常に便利です。

これは、開始するのに適したチュートリアルであり、本当に役に立ちました。

http://msdn.microsoft.com/en-us/library/office/bb448854.aspx

また、SDK と同じサイトにある Productivity Tool の API ドキュメントも使用できます。

于 2013-01-25T13:28:13.703 に答える
1

プログラムで Interop.Word を使用できますが、入手できるドキュメントが非常に少ないことに注意してください。C-SharpCorner の this oneWindowsDevCenterの this one のような例を見て、アプリケーションを開発することができました。例が古いものであっても、主要なアイデアを理解して構文に慣れ、後で更新されたバージョンの Interop.Word (構文が少し単純化されています) を使用してプログラムを作成できます。

あなたの場合、顧客情報を挿入するドキュメントの場所にブックマークを配置して、きちんとした Word テンプレートを作成する必要があります。次に、プログラムからテンプレートを開き、それらのブックマークを使用してナビゲートし、データベースから取得した情報を挿入できます。

Word の自動化に深く入り込みたくない場合は、DocX (Microsoft Word や Office をインストールする必要さえありません) やOpen XML ( .docx ファイルを生成します)。

于 2013-01-21T11:12:13.720 に答える
1

この種の機能のために過去に Office.Interop アセンブリを使用しましたが、この方法にはいくつかの明確な欠点があります。

  • コードが実行されているマシンに Word がインストールされている必要があります。
  • Interop アセンブリは実際にはバックグラウンドで Word を起動するため、すべてを適切に破棄してエラーを処理するように注意する必要があります。そうしないと、Word プロセスがホスト サーバーの CPU/メモリを浪費することになります。
  • API の操作はあまり快適ではなく、ドキュメントもやや不足しています

私はDocXOpen XMLも試しました。どちらにも利点がありますが、Interop と比較すると多少制限される傾向があります。私のアドバイスは、DocX または Open XML を使用して機能を試し、他の方法で機能を実現できない場合にのみ Interop にフォールバックすることです。3 つの API すべてについて、オンラインでたくさんのチュートリアルがあるはずです。

于 2013-01-21T16:29:21.923 に答える
1

あなたの答えは OpenXML SDK です。

  1. Open XML SDK 2.5 for Microsoft Office に移動
  2. OpenXMLSDKV25 と OpenXMLSDKToolV25 をダウンロード
  3. SDK と生産性ツールをインストールする
  4. Word を開いてテンプレート ドキュメントを作成する
  5. Open XML SDK 生産性向上ツールを開く
  6. ワード文書を開く
  7. ドキュメント エクスプローラーからドキュメント名を右クリックし、リフレクト コードを選択します。
  8. 生成されたすべてのコードをプロジェクトにコピーします
  9. データに置き換えたい「段落」または「実行」を見つけて編集します
于 2013-01-28T08:59:35.547 に答える
0

レポートを作成するために、interop と syncfusion の両方を使用しました (ただし、Excel レポートを生成していましたが、両方のテクノロジを使用して Word レポートを生成することもできます)。私のフィードバック:-

  1. Visual Studio を備えたほとんどのコンピューターには相互運用機能が含まれていますが (Visual Studio 以外のコンピューターについてはわかりません)、相互運用機能を使用するには、レポートを生成するコンピューターにも互換性のある Microsoft Excel が存在する必要がありますが、syncfusion では、Microsoft Excel が存在する必要はありません。同じコンピュータ。
  2. asp.net を使用する予定がある場合、相互運用性はサポートされていません (少なくとも私が働いていたときはそうではありませんでした) が、syncfusion はサポートされています。

syncfusion のリンク:- http://www.syncfusion.com/products/aspnet/docio

概要 :- コンソール アプリケーションを開発していて、サーバー (アプリケーションが展開される場所) に Microsoft Office がインストールされている場合、相互運用は良い考えかもしれません。それ以外の場合は、syncfusion もご覧ください。

于 2013-01-23T17:31:54.720 に答える
0

無料の.NET Word APIを使用して、c# を使用して Word 97 ~ 2010 でレポートを生成できます。

        //Create word document
        Document document = new Document();
        document.LoadFromFile(@"..\..\..\..\..\..\Data\Fax.doc");

        string[] filedNames = new string[]{"Contact Name","Fax","Date"};

        string[] filedValues = new string[]{"John Smith","+1 (69) 123456",System.DateTime.Now.Date.ToString()};

        document.MailMerge.Execute(filedNames, filedValues);

        //Save doc file.
        document.SaveToFile("Sample.doc", FileFormat.Doc);
于 2014-04-11T07:55:27.227 に答える