3

3 人のユーザーが利用できるテスト ベッド アプリケーションがあります。

すべてのユーザーが同時にアプリを実行すると、ストアド プロシージャが実行され、3 つすべてが結果セットを取得します。現在ADO.NET Datatable、約 30,000 レコードを使用しており、アプリはそれぞれのレコードを Excel テンプレートに移動する必要があります。

テンプレートは、データのインポート後に実行する必要xlsmがあるいくつかを含むファイルです。VBAこのテンプレートはソリューションに保存されます。

データを から に移動しようとしてDataTableworksheetますExcel-Interop

この量のデータを Datatable から Excel に移動した経験はありますか?

@slugster は、「Excel からデータソースを設定し、ダーティ リードを使用してクエリを実行する」ことを提案しました ...Excelマテリアライズされていないデータテーブルにリンクされたデータソースを設定することは可能ですか?

30000 行 x 10 列のテーブルをループするとxl interop問題が発生しますか?

4

1 に答える 1

1

この量のデータを Datatable から Excel に移動した経験はありますか?

DataTable オブジェクトからではなく、データをインポートする Excel の組み込み機能を使用したその量のデータです。

@slugster は、「Excel からデータソースを設定し、ダーティ リードを使用してクエリを実行する」ことを提案しました。具体化されていないデータテーブルにリンクされた Excel でデータソースを設定することは可能ですか?

私もこれを提案します。さらに進むには、ストアド プロシージャを作成してから呼び出すことをお勧めします。ストアド プロシージャを使用すると、パフォーマンスが向上するはずです。この手順では、データを収集して準備し、それを Excel に返すことができます。また、プロシージャ内にキャッシュ メカニズムを組み込むこともできます。たとえば、データが毎日しか変更されない場合、ソース テーブル内のデータを 1 日に 1 回だけ再構築するため、最初にデータを要求したユーザーだけが最初のパフォーマンス ヒットを受けます。また、VBA で Excel で行っている後処理の種類によっては、それも手順で処理できる可能性があります。この手順は、SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED を手順の先頭に追加すると、ロックの問題の可能性を減らすのにも役立ちます。

Excel でのストアドプロシージャの使用に関するすばらしい記事を次に示します。

xl 相互運用機能を介して 30000 行 x 10 列のテーブルをループすると問題が発生しますか?

これは、「問題」の定義によって異なります。パフォーマンスに影響を与える可能性があることがわかりましたが、ストアド プロシージャでできる限り処理すれば問題ありません。データの世界では、これは非常に小さなことです。

于 2014-06-05T12:37:22.427 に答える