C# Excel特集
情報集めすぎて頭いてええええええええええええw
後、非常に面白かったのが
// Excel.Application の新しいインスタンスを生成する Excel.Application xlApplication = new Excel.Application();
[C#] Excelファイルを読み込み、セルの内容を表示する
"Microsoft Excel 15.0 Object Library"
を選択
でも実際は
選択した項目がエラー吐くから
「選択した項目をバインドするオプション」で
Microsoft.Office.Interop.Excel
を選択。
書き換えないと動かねぇ。という。
Microsoft.Office.Interop.Excel.Application xlApplication = new Microsoft.Office.Interop.Excel.Application();
この方式だと、COMオブジェクトがメモリを掴んで離さない!!
なんか昔、糞企業でExcelの対応やってた時、EXCELのマクロとかExcel動かすとメモリバカ食いしてPCが固まるって処理あったけどさー。
多分あれExcelのCOMの処理がメモリ食うから固まってただけじゃ。
つーかシート山盛り盛ってたから固まってただけであって
そこまでやるならAccess使えや!!
と今ならイイたくなる。
なんというか、実はメモリを食うことが問題何じゃなくて、
「メモリを開放しないこと」
が問題のような気がしてきたな
Microsoft.Office.Interop.Excelを使う方法を推奨しない理由
処理が遅い
正しくは、「注意して書かなければ」とても処理が遅くなる、です。
COM参照では、実際に裏でExcelアプリケーションを立ち上げて操作することでExcelファイルを読み書きします。
そのためまず最初にEXCEL.EXE
が起動するための時間がかかります。
起動してからもシートやセルへのアクセスはExcelを経由するため、できるだけアクセス回数を減らすような実装方法を意識する必要があります。
明らかに
Microsoft.Office.Interop.Excel
は時代遅れみたいですね。
だからってさー、
VisualStudio2012以降しか新機能Excel使えないのはひどくないですか(泣)