0

シナリオは次のとおりです。

  • XLSX スプレッドシートにエクスポートしたい SQL Server 2008 R2 データベースに約 40 万件のレコードがあります。
  • アプリケーションは ASP.NET 4.0 Web アプリケーションです

ReportViewer で DataTable を使用しようとしましたが、DataTable 全体がメモリに読み込まれるため、w3wp プロセスのメモリ使用量が急増します。

私は、Gembox スプレッドシートがそのシナリオをもう少しうまく処理できると考え、DataTable の代わりに DataReader を使用し、新しい行を Excel ワークブック シートに書き込んで、HTTP ストリーム経由でフラッシュできると推測しました。しかし、Gembox スプレッドシートのどこにもその関数が見つかりません。Gemboxまたは他のサードパーティコンポーネントを使用して、誰かが同様のことを達成しましたか?

4

1 に答える 1

0

ここでは推測しているだけですが、SQLDataReader を使用して実行できるはずです。SQL DataReader は SQL DataSet とは異なります。前者は一度に 1 つのレコードを取得し、DB へのライブ接続が必要でした。メモリの問題を引き起こすべきではないと思います。後者はテーブル全体を一度に取得するため、メモリ使用量が急増する可能性があります。これはMicrosoftの良い記事です。datareaderとdatasetの違い

また、Excel にも制限があることに注意してください。ちなみに、Excel 2007 はかなり優れており、1000k x 16k のレコードを処理できます。古いバージョンの Excel は、明らかにより制限されています。Excel 2007 の制限

また、Excel がそのような大きなファイルを処理できる場合、プログラムは 400k レコードを処理する必要があると考えています。私はそれが大量のデータであることを知っていますが、オペレーティングシステムは通常、あなたが何か間違ったことをしていない限り、メモリ管理を担当します.

于 2013-08-02T18:30:21.307 に答える