ただいま修行中...

ソフトウェア開発において、勉強中で悪戦苦闘の日々

C#におけるExcelファイルを開くときの注意

2007-10-10 23:15:58 | C#
C#において、Excelファイルを開く実装は以下の通りになります。

Excel.Application xls = new Excel.Application();
Excel.Workbooks wbs = xls.Workbooks;
Excel.Workbook wb = wbs.Open(ファイル名, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

wb.Close(false, Type.Missing, Type.Missing);
ReleaseComObject(wb);
ReleaseComObject(wbs);
xls.Quit();
ReleaseComObject(xls);
System.GC.Collet(); //念のため

こんなに簡単なサンプルプログラムを作成していたら、タスクマネージャを起動すると、Excel.exeが残っていました。

詳細な原因はつかめていませんが、どうもwbs.Openの行が悪いことがわかりました。
なぜReleaseComObejctをしているのに残っているかが不明です。

ちなみにOSはXPで、Officeは2003でこの現象が発生しています。
ちょっと使用する人は注意が必要だと思います。