読者です 読者をやめる 読者になる 読者になる

C# Excel特集

情報集めすぎて頭いてええええええええええええw

 

jeanne.wankuma.com

jeanne.wankuma.com

 

後、非常に面白かったのが

    // 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オブジェクトがメモリを掴んで離さない!!

http://hgn.ai/fyLvp8/img1

 

なんか昔、糞企業でExcelの対応やってた時、EXCELのマクロとかExcel動かすとメモリバカ食いしてPCが固まるって処理あったけどさー。

 

多分あれExcelのCOMの処理がメモリ食うから固まってただけじゃ。

つーかシート山盛り盛ってたから固まってただけであって

そこまでやるならAccess使えや!!

と今ならイイたくなる。

 

なんというか、実はメモリを食うことが問題何じゃなくて、

「メモリを開放しないこと」

が問題のような気がしてきたな

qiita.com

 

Microsoft.Office.Interop.Excelを使う方法を推奨しない理由

処理が遅い

正しくは、「注意して書かなければ」とても処理が遅くなる、です。
COM参照では、実際に裏でExcelアプリケーションを立ち上げて操作することでExcelファイルを読み書きします。
そのためまず最初にEXCEL.EXEが起動するための時間がかかります。
起動してからもシートやセルへのアクセスはExcelを経由するため、できるだけアクセス回数を減らすような実装方法を意識する必要があります。

 

 

 

明らかに

Microsoft.Office.Interop.Excel

は時代遅れみたいですね。

 

だからってさー、

VisualStudio2012以降しか新機能Excel使えないのはひどくないですか(泣)