2

Web サイト プロジェクトで C# の Excel 相互運用機能を使用して、Excel ファイルを解析し、テキスト ファイルに変換しています。サンプルコードは以下の通りです。デバッグモードでうまくいきました。しかし、タスク マネージャーでは、2 つの Excel が実行されていることがよくあります。さらに、Web サイトを IIS に展開した後、excel.exe が終了しません。私のプロジェクトは、VS 2010 (Ultimate) の Web サイト プロジェクトです。私のマシンは Windows Server 2008 です。つまり、IIS 7 が必要です。しかし、inetmgr を実行すると、IIS バージョン 6 が表示されます (グーグルで調べたところ、私の IIS はまだ 7 であることが確認されました。管理ツールは 6 です)。

私の質問は、IIS に展開した後に Excel が終了しないのはなぜですか?

Excel.Application excel=new Excel.Application();
Excel.Workbooks wbs=excel.Workbooks;
Excel.Workbook wb=wbs.Open(…);

Try 
{
   …
   Foreach(Excel.Worksheet sheet in wb.Sheets)
   {
      …
      Marshal.RealseComObject(sheet);
   }
   …
}

Catch()
{
}

Finally
{
   wb.Close(false, missing, missing);
   while (Marshal.ReleaseComObject(wb)!=0)
   {
   }
   wb=null;
   while (Marshal.ReleaseComObject(wbs)!=0)
   {
   }
   wbs=null;

   excel.Quit();
   while (Marshal.ReleaseComObject(excel)!=0)
   {
   }
   excel=null;
   GC.Collect();
   GC.WaitForPendingFinalizers();
}

更新:wbs.Open(…)例外がスローされたためであることが判明しました。

次のリンクから解決策を見つけ、問題を解決しました。 C# で Excel ファイルを開くことができません

4

0 に答える 0