1

クライアントの要件により、ASPOSE テクノロジを OPENXML SDK に置き換えて、Excel 2007 (.xlsm マクロ有効ファイル) を読み書きできるようにしています。

ただし、実行時間を比較すると問題が発生します。データが大きすぎて (たとえば 18k のデータを返す)、読み取りまたは書き込みができない場合、ASPOSE は OPEN XML SDK と比較して速すぎます。

以下のリンクに示されている次のアプローチを採用しており、完全に機能しますが、実際の問題は、実行時間が長すぎて、その間にトランザクション タイムアウトが失われることです。

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

OPENXML SDK が ASPOSE よりも短い時間で結果を提供できなかった場合にのみ、OPENXML SDK が受け入れられます。そうでない場合、Open XML SDK コードを見つけて作成する努力が無駄になります。

基本的に、データセット内の巨大なデータ全体を取得し、上記のテクノロジーのいずれかを使用して書き込みます。

コーディングの観点からパフォーマンスを向上させるための助けは、高く評価されます。

4

1 に答える 1

0

問題は、IO 時間ではなく、ワーキング セットの 1 つです。メモリの割り当てが多すぎると、他の要因よりもアプリケーションの速度が低下します。ストリーミング アプローチを使用するのが最適です。少し前に、ストリーミング アプローチを使用するスクリーン キャストを記録しました。これは、1 秒あたり約 10,000 行の速度でワークシートを生成します (20 列のデータを持つ行の場合)。これは IO バウンドに近いため、これ以上高速化することは困難です。より高速なディスクを使用する必要があります。

スクリーン キャストとサンプル コードは次の場所にあります。

http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2012/01/10/screen-cast-using-open-xml-and-linq-to-xml-in-a-streaming-fashion-to- create-huge-spreadsheets.aspx

-エリック

于 2012-11-07T08:49:17.623 に答える