4

状況は次のとおりです-

  • UserX は PlayerY に関する情報を求めています。
  • 現在、PlayerY に関する詳細を取得し、2 つのデータ セットを返す 2 つの SQL スクリプトを実行しています。それぞれのデータ セットは約 10,000 レコードです。
  • 次に、これらのセットを手動でコピーして Excel ワークブックに貼り付け、これを UserX にメールで送信します。

現在計画されているアプローチ:

  1. PlayerY の詳細の入力を受け入れる UserX 用の単純な WinForm または WPF を作成します。
  2. フォームからの入力を受け入れる 2 つのストアド プロシージャを作成します。

データはデータベースから UserX のクライアントにどのように取得されますか?

データセットが非常に大きく、サイズが原因で特定のアプローチに予期しない問題が発生する可能性があるためです。ストアド プロシージャは、最初にデータを実際のサーバー テーブルに移動し、次に 2 番目の手順を実行してサーバー テーブルから Excel にデータを移動する必要がありますか? それとも、中間サーバー テーブルなしで直接 XL に移動するのは簡単なので、ストアド プロシージャがデータセットを返すようにする必要がありますか?

4

2 に答える 2

2

C# 経由でレコードをフェッチする場合は、

一度に 10000 件以上のレコードを取得する代わりに、特定の番号を取得します。1000回、10回など。これにより、プロセスが高速になり、メモリ負荷が軽減されます。

データセットを格納するために中間サーバー テーブルを作成する必要はありません。

C# で DocumentFormat.OpenXml.Spreadsheet を使用すると、そのデータセットを Xlsx 形式に書き込むか、System.xml を使用して xml ファイルを作成するか、サードパーティ ツールを使用して独自の Excel xml を作成し、xls 形式を作成できます。

于 2012-07-18T09:57:18.213 に答える
1

C# を使用して実行時にストアド プロシージャから返された結果から .csv ファイルを作成することをお勧めします。.csv ファイルは Excel で開くことができるため、最終的にアプリケーションとして Excel を使用できます。

また、このリンクを参照してください。したがって、Automation of Office の使用はお勧めしません。

http://support.microsoft.com/kb/257757から引用した段落Microsoft は現在、無人の非対話型クライアント アプリケーションまたはコンポーネント (ASP、ASP.NET を含む) からの Microsoft Office アプリケーションの自動化を推奨しておらず、サポートもしていません。 、DCOM、および NT サービス) で、Office をこの環境で実行すると、Office が不安定な動作やデッドロックを示す可能性があるためです。

于 2012-07-18T09:33:40.467 に答える