ファイル保存が遅いケースがある
値や数式が大量(?)の場合なのか不明ですが、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
- 公開