ファイル保存が遅いケースがある

値や数式が大量(?)の場合なのか不明ですが、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
公開
Loading