2

我在我的网站项目中使用 C# 中的 Excel 互操作来解析 Excel 文件并将其转换为文本文件。示例代码如下。它在调试模式下运行良好。但是在任务管理器中我经常看到两个 Excel 正在运行,为什么?另外将网站部署到IIS后,excel.exe不会退出。我的项目是 VS 2010 (Ultimate) 中的一个网站项目。我的机器是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