前提
言語:c#
closedxmlでテンプレートファイルを読み込み、DBのデータを書き込みファイルを保存する。
テンプレートファイルのサイズが5MBほどでマクロが入っているため、拡張子がxlsm。
実現したいこと
ファイルの読み込み、保存の速度をそれぞれ2秒くらいで終了させたい。
発生している問題・エラーメッセージ
現状ファイルの読み込み、ファイルの保存にそれぞれ15秒ほどかかっている。
該当のソースコード
c#
1// 開くだけで15秒 2var wb = new XLWorkbook(テンプレートファイルのパス); 3 4//wbへの書き込み処理(1秒もかからず完了。) 5 6// 保存にも15秒 7wb.SaveAs(ファイル保存先のパス); 8
試したこと
ファイルを開く際の引数にLoadOptionsを追加し、
EventTrackingをDisabled、RecalculateAllFormulasをfalseにしたが、変化なし。
ファイルを保存する際の引数にSaveOptionsを追加し、
SaveOptionsのプロパティを全てをfalseにしたが、変化なし。
テンプレートファイルの中身を一部削除し、ファイルサイズを500KBまで削減した場合
読み込み、保存にそれぞれ1秒かからず終了しました。
そのため、ファイルサイズが原因だとは分かったのですが、テンプレートファイルの中身を削除して
ファイルサイズを少なくすることができません。
何か解決案などがあれば、ご教示ください。
ファイルサイズを少なくすることができず、closedxmlを使いたいというと、無理ではないかと思います。
closedxmlをやめて、テンプレートファイルを書き換えるExcelVBAを用意する。
ExcelVBAは起動すると、自動的に書き換える内容が記載されたファイルを読み込み
テンプレートファイルを書き換える。
C#アプリからは、書き換える内容が記載されたファイルの生成と
ExcelVBAを起動することだけを行う。
これなら早くなるのではないかと考えます。
やっぱりファイルサイズを小さくしないと無理ですよね。
ありがとうございます。
こちらをベストアンサーにしたいので、お手数ですが回答に転記頂ければと思います。
面倒なので自己解決で閉じてもらえると助かります。
回答2件
あなたの回答
tips
プレビュー