ファイル保存が遅いケースがある
値や数式が大量(?)の場合なのか不明ですが、ExcelCreatorのファイル保存がめちゃ遅い場合があります。
例えば、セルA1からA65536に値が入っている場合です。
Excelで保存する場合は同様でもほとんど一瞬で保存が終わりますので、ExcelCreatorでは何か違う方法で保存しているものと思われます。
サンプルプログラム1(ファイルを開いて、保存するだけ)
セルA1からA65536に値1がセットされているExcelファイルを、開いて、保存しているだけのサンプルです。
Dim xlsCr As New ExcelCreator.XlsCreator 'Stopwatchオブジェクトを作成する Dim sw As New System.Diagnostics.Stopwatch() 'ストップウォッチを開始する sw.Start() 'ファイルオープン xlsCr.OpenBook("CopyPasteSample.xls", "") xlsCr.SheetNo = 2 sw.Stop() '結果を表示する Console.WriteLine("ファイルオープン完了: " & sw.Elapsed.ToString) '------------------------------------- 'クローズ '------------------------------------- sw.Reset() sw.Start() xlsCr.CloseBook(True) 'ストップウォッチを止める sw.Stop() '結果を表示する Console.WriteLine("ファイル保存完了: " & sw.Elapsed.ToString) xlsCr.Dispose()
<実行結果>
自分の環境では保存に約1分30秒掛かっています。
うーん、これはどうなんでしょう?いただけないなぁ。
サンプルプログラム2 (ファイルを開いて、セルの最終座標を取得し、保存する)
ファイル全体、もしくはシート全体を見る処理に時間が掛かるのでしょうか?
という仮定し、メソッドMaxDataを使用しセルの最終座標を調べた後、保存してみます。
Dim xlsCr As New ExcelCreator.XlsCreator 'Stopwatchオブジェクトを作成する Dim sw As New System.Diagnostics.Stopwatch() 'ストップウォッチを開始する sw.Start() 'ファイルオープン xlsCr.OpenBook("CopyPasteSample2.xls") xlsCr.SheetNo = 0 sw.Stop() '結果を表示する Console.WriteLine("ファイルオープン完了: " & sw.Elapsed.ToString) '範囲を求める Dim MaxSize As Size = xlsCr.MaxData(ExcelCreator.xlPoint.ptMaxPoint) Console.WriteLine("最大行:" & MaxSize.Height.ToString & " 最大列;" & MaxSize.Width.ToString) '------------------------------------- 'クローズ '------------------------------------- sw.Reset() sw.Start() xlsCr.CloseBook(True) 'ストップウォッチを止める sw.Stop() '結果を表示する Console.WriteLine("ファイル保存完了: " & sw.Elapsed.ToString) xlsCr.Dispose()
<実行結果>
そんなことでは無かったようです。
うーん、これはどうなんでしょう?いただけないなぁ。
しかしこのケースではReadBook で ファイル保存はしなくていいんですけどね。
それにしても保存が遅いのは気にくわないです。
履歴
- 2013/04/08
- 公開