oExcel.Quit();
//清除对象
System.Runtime.InteropServices.Marshal.ReleaseComObject(oWorksheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(oWorkbook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(oExcel);
oWorkbook=null;
oExcel=null;
System.GC.Collect();===============
差不多了。

解决方案 »

  1.   

    看看这个http://support.microsoft.com/?id=317109
    我试过了,非常有效:)
      

  2.   

    Excel.Application.DisplayAlert = false
    Excel.Application.Quit
    foreach(System.Diagnostics.Process p in System.Diagnostics.Process.GetProcesses()) 
    {
    if(p.ProcessName.ToUpper() == "EXCEL")
    {
    p.Kill();
    }
    }
      

  3.   

    Microsoft solution:
    http://support.microsoft.com/?id=317109
      

  4.   

    把这个函数加上去就行了
    /// <summary>
    /// 用于销毁Excel对象,并且实行强制垃圾回收
    /// </summary>
    private void ReleaseExcel(ref Excel.Application m_xlsExcelApp)
    { System.Runtime.InteropServices.Marshal.ReleaseComObject(m_xlsExcelApp);
    m_xlsExcelApp=null;
    GC.Collect();
    GC.WaitForPendingFinalizers();
    }
      

  5.   

    我需要同时处理两个Excel文件,就是说一个文件要一直在内存中存在,上面的方法会不会把我
    需要的Excel进程也退出呢?
      

  6.   

    你每一次创建一个新的Excel.App对象就创建一个独立的Excel进程。
    应该是可以做到分别退出的。
      

  7.   

    不会,你只要保留一个引用即可,因为GC侦察到Excel进程中的任何一个子对象有被引用,她就不会释放对excel对象.
      

  8.   

    Excel.Application.Quit
    Excel.Application.Disconnect();
      

  9.   

    实在不行我就用进程ID把没用的KILL掉
      

  10.   

    Excel.Application.DisplayAlert = false
    Excel.Application.Quitforeach(System.Diagnostics.Process p in System.Diagnostics.Process.GetProcesses()) 
    {
      if(p.ProcessName.ToUpper() == "EXCEL")
    {
    p.Kill();
    }
    }
      

  11.   

    xlBook.Close(false,Missing.Value,Missing.Value);
    xlApp.Quit();
    xlApp=null;
    xlBook=null;
    xlSheet=null;
      

  12.   

    看看这个http://support.microsoft.com/?id=317109
    我试过了,非常有效:)
    ---------------------------------------------------
    按照这个方法,确实可以正常退出,但是我觉得实现起来有困难
    比如说:Range.Rows.count
    这时候他认为Rows也是间接引用的,就退出不了进程,但是excel的对象模型里没有Rows object,他只是一个属性,我怎么去直接声明他呢