2012-05-10 9 views
1

Excelと.Netとのinteropが非常に遅いことはよく知られているようです。私は一度にワークシートオブジェクトに値の配列をコピーする機能を認識してんだけど、私のストップウォッチに応じてタイプの一つでもコマンド(VB.Net内側):より速いExcel interopメソッドが必要

WS.Range(--range string here--).Value = array 

...を取ります0.3秒以上!これは、私のルーチンが各ワークシートに数十の配列を書き込んでおり、ワークブックごとにいくつかのワークシートがあり、おそらくいくつかのワークブックを繰り返すからです。

一度に不連続な非長方形のセルグループを書き込む方法があった場合、1回の書き込みコマンドでWS全体を実行できます。しかし、私はそれを行う方法があるとは思わない "元の間の"セルのための元の値を保持します。これらのワークブックはあらかじめフォーマットされているので、特定のセルをそのまま残しておく必要があります。

私はこれをスピードアップするために何かできますか?

+2

最後に計算をオフにしてみましたか?すべてを再計算することを忘れないでください。また、VBAからやってみてください - まだ遅い場合は.Netは責任がありません。 – Ben

+0

ありがとう、実際には大きな違いがありました。私はこの習慣を知っていましたが、計算がそのヒットであるとは思わなかった(これらのワークシートのために)ちょうどボトルネックは.Net-Com interopだったと仮定しました。コメントに答えを与える方法がわからないので、私は自分自身を投稿します。 – Tekito

+1

あなたはまた、回答を投稿するようにベンに頼むことができますので、それを受け入れることができます:) – user850010

答えて

2

上記のBenのコメントはかなり釘付けになっています。エクセルの計算式がボトルネックになりました。 .Net-Excelの相互運用性は遅いという評判があったが、だとは思っていなかったので、安心した。が遅い。

+0

いつもお世話になります! – Ben

0

これは可能かどうかわかりませんが、同じことをするライブラリを調べてみましょう:NPOI。それは、Excelドキュメントの読み書きができます。 これを使用すると、アプリケーションの処理速度が向上しました(xlsからC#アプリケーションにデータを取得する)

関連する問題