excel.Quit();
excel=null;
GC.Collect();
另:没有检查你的代码,如果你的代码有错误,那么仍会出现excel进程不能关闭,请重启动计算机,保证代码无误后再运行程序。

解决方案 »

  1.   

    已经是这样做了,在服务器端仍然无法清除Excel的进程麻烦你帮我看看上面那段代码有没有什么问题,我看了好几次都没有发现问题
      

  2.   

    To sumanden:    请问你每次操作完Excel等的时候用GC都能成功的收集、释放掉资源嘛?
      

  3.   

    you need to call System.Runtime.InteropServices.Marshal.ReleaseComObject() on all automation object references, see
    PRB: Office Application Does Not Quit After Automation from Visual Studio .NET Client
    http://support.microsoft.com/default.aspx?scid=kb;EN-US;317109
      

  4.   

    各位老大:救命阿,用了
    System.Runtime.InteropServices.Marshal.ReleaseComObject(excel)仍然不能清除服务器端的资源
      

  5.   

    你在用上面的方法做实验,是否已重启过计算机,保证在进程里没有死掉的Excel进程?
    下面是一段经过测试无误的代码
    Excel.Application oExcel;
    Excel.Workbook oBook;
    Object oMissing = System.Reflection.Missing.Value;
    oExcel = new Excel.Application();
    oBook = oExcel.Workbooks.Add(oMissing);
    for (int i=1;i<=4;i++)
    {
     
      oExcel.Cells[i,5]=i.ToString();
      oExcel.Cells[i,6]="我们来看看";
      oExcel.Cells[i,7]="'10000E0000001";
      oExcel.Cells[i,8]="10000E0000001";
    }
    Sheets sheets = oBook.Worksheets;
    _Worksheet worksheet = (_Worksheet) sheets.get_Item(1);
    oBook.Saved = true;    
    oExcel.UserControl = false;
    worksheet.SaveAs("c:\\books1234.xls",oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing, oMissing,oMissing);
    oExcel.Quit();
    oMissing=null;
    sheets=null;
    worksheet=null;
    oBook=null;
    oExcel=null;
    GC.Collect ();
      

  6.   

    to sumanden仍然未能清空服务器的资源,请问你是在什么环境下做的测试?
      

  7.   

    win2000专业版+Vs.net正式版+OfficeXP
      

  8.   

    我用的是Office 2000,你觉得有没有可能是office 2000的问题?
      

  9.   

    没在Office2000下测试过,不过我想不会是那个问题,应该是你的代码问题
      

  10.   

    你可以看一下,除了数据赋值部分和你写的不一样之外,其他都是一样的
    public void CreateExcel(DataView dv)
    {
    Excel.Application excel;
    Excel.Workbook book;
    object oMissing =System.Reflection.Missing.Value; excel =new Excel.ApplicationClass();//此处可能是2000和XP的不同
    book =excel.Workbooks.Add(oMissing); int rowIndex =1;
    int colIndex =0; foreach(DataColumn dc in dv.Table.Columns)
    {
    colIndex++;
    excel.Cells[rowIndex,colIndex] =dc.ColumnName;
    } foreach(DataRow row in dv.Table.Rows)
    {
    rowIndex++;
    colIndex =0;
    foreach(DataColumn dc in dv.Table.Columns)
    {
    colIndex ++;
    excel.Cells[rowIndex,colIndex] = row[dc.ColumnName].ToString();
    }
    } Excel.Sheets sheets =book.Worksheets;
    Excel._Worksheet worksheet =(Excel._Worksheet)sheets.get_Item(1);
    book.Saved =true;
    excel.UserControl =false; string path =@"C:\TEST.XLS";//Server.MapPath(".")+"\\qjfytj.xls"; worksheet.SaveAs(path,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing);
    excel.Quit();
    oMissing =null;
    sheets =null;
    worksheet =null;
    book =null;
    excel =null;
    GC.Collect();
    }如果是代码有问题的话应该生成Excel就出问题了,可是现在仅仅是资源无法释放
      

  11.   

    差异仅在于SaveAs的参数不同罢了
      

  12.   

    正常?怎么在我这里EXCEL死活都要在任务管理器里出现!你说的SaveAs的参数有什么不同阿?都是一样的阿
      

  13.   

    对了,你是在WebForm还是WinForm下运行的?
      

  14.   

    在.net中引入dcom+对象,目前似乎还是存在许多问题!包括微软自己的office产品。
    初用起来很是糟糕!不过在winform下总是很好的,同样的class,引入word or excel,可是在webform下,一切都不一样,一个对象生成了,在对象释放掉之后,word,excel的进程确依然存在。本人单独写了一个class,来杀死此刻的进程,有谁需要的,请mail:[email protected]