私は大きなExcelファイル(約40メガバイト)のセルを書き込むプログラムを持っています。C#を使って大きなExcelファイルに書き込む方法は?今非常に遅い
私は、セルを書くだけの動きでさえ、非常に遅いことがわかりました。 これは私のプロジェクトでやっていることです。私はこのようなセルを書くつもりですとき
Excel.Workbook apoWorkBook = _Excel.Workbooks.Open(apo);
Excel.Worksheet apoWorkSheet = apoWorkBook.Worksheets[1];
Excel.Range apoRange = apoWorkSheet.UsedRange;
は次に:
apoRange.Cells[target_row, 23].Value2 = "Value"; // (Repeats in different rows and columns)
これは、ソースコードの行を終えるのに約20秒以上を費やしています。
しかし、私はこのように書くために多くの同じコードを持っています。これはそれを完了するために多くの時間を費やすだろう。
小さな空のExcelファイルに書き込むための実験を行いましたが、これを行うには約0.秒しか使用しませんでした。
いつもセルに書き込んだ後にファイルを保存するようなので、大きなエクセルファイルに書き込むのが非常に遅いと思います。
BIG Excelファイルに書き込む最も速い方法は何ですか?セルにすべての値を入れてすぐに一度に保存するようなことができますか?
助けてください、ありがとう!その差は非常になります疑う
関連https://stackoverflow.com/a/536699/5265292 – grek40
オプションで、Excel Interopを使用しないでください。いくつかのヒントがここにありますhttps://stackoverflow.com/a/2603625/5265292 – grek40
@ grek40の最初のコメントにしたがって、Excel.Rangeに値の配列を書くことができますが、これは気にする必要があります上記の例では、arr [target_row-1,22]に値を代入する必要がありますが、C#配列は0オフセットですが、Excel.RangeはC#配列でアクセスされますが実際は1オフセットです。範囲に書き込む前に – PaulF