这是个共性的问题,奇怪的就是在有些机器上就可以。
我跟了半下午,发现只要worksheet赋过值(定义时除外),这个EXCEL进程就退出不了,只能在调试时杀掉,唉,头疼啊。
好在当excel进程数多于两个的时候,GC.COLLECT就可以收集掉多余的EXCEL进程了,勉强用吧。

解决方案 »

  1.   

    tryExcelWorkBook.Close( false, null, null );
    Excel.Workbook.Close();
    ExcelApp.Quit();
    System.Runtime.InteropServices.Marshal.ReleaseComObject( ExcelRange );
    System.Runtime.InteropServices.Marshal.ReleaseComObject( ExcelWorkSheet );
    System.Runtime.InteropServices.Marshal.ReleaseComObject( ExcelWorkBook );
    System.Runtime.InteropServices.Marshal.ReleaseComObject( ExcelApp );
    ExcelRange = null;
    ExcelWorkSheet = null;
    ExcelWorkBook = null;
    ExcelApp = null;
    GC.Collect();
      

  2.   

    to goodidea ,不行的, 我昨天试过了, 只要不对worksheet进行操作,
    System.Runtime.InteropServices.Marshal.ReleaseComObject(excelapp);
    就可以关掉这个EXCEL进程,可一旦操作了了worksheet,这个进程就死了,怪啊,不知道worksheet里有没有类似QUIT ,CLOSE的方法啊??
      

  3.   

    我用的OfficeXP + OfficeXp PIA没问题
      

  4.   

    难道真是office2000 + win2k server + sp3的问题???
      

  5.   

    我现在也碰到这个问题,但是内存里面不止2个excel.exe
    用winform却一切正常。
      

  6.   

    一个替换方法:
        Excel释放不了资源只是在IIS中直接执行会出现,如果在WinForm下,就没有着种现象了。也就是说可以通过WinForm生成Excel的话就不存在这种问题了,你可以写一个WinForm来生成Excel,通过WEB与这个WinForm通讯,控制Excel的生成,生成之后拷贝回IIS的目录下即可。
       我是通过Socket与WinForm通讯来生成的。