我在读取完Excel中的数据后,进程中总用一个叫做Excel的进程结束不了。请问用什么方法能结束这个进程呢?

解决方案 »

  1.   

    oBook.Close(false,null,null);
    oExcel.Workbooks.Close(); oExcel.Quit();
    System.Runtime.InteropServices.Marshal.ReleaseComObject((object)oSheet);
    System.Runtime.InteropServices.Marshal.ReleaseComObject((object)oBook);
    System.Runtime.InteropServices.Marshal.ReleaseComObject((object)oExcel);
    oSheet = null;
    oBook = null;
    oExcel = null;
    GC.Collect();参考了很多资料得到的句子,但在我机器上行不通
    System.IO.FileStream fileStream = System.IO.File.OpenRead(filePath);
    byte[] fileData = new byte[fileStream.Length];
    fileStream.Read(fileData,0,(int)fileStream.Length);
    HttpContext.Current.Response.Clear();
    HttpContext.Current.Response.AddHeader("Content-Type","application/vnd.ms-excel");
    oXLSFileName = System.Web.HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(oXLSFileName));
    HttpContext.Current.Response.AddHeader("Content-Disposition","inline;filename=" + System.Convert.ToChar(34) + oXLSFileName + System.Convert.ToChar(34));
    HttpContext.Current.Response.AddHeader("Content-Lenth",fileStream.Length.ToString());
    HttpContext.Current.Response.BinaryWrite(fileData);
    fileStream.Close();
    System.IO.File.Delete(filePath);
    HttpContext.Current.Response.End();这是把Excel显示的语句,可以结束进程,期待高手说明一下
      

  2.   

    try 
      读数据
    finally
      excel.close
      

  3.   

    mywork =null;
    this.Dispose();
    GC.Collect();
    System.Diagnostics.Process[] myProcesses ;
    myProcesses = System.Diagnostics.Process.GetProcessesByName("EXCEL");
    foreach(System.Diagnostics.Process myProcess in myProcesses)
    {
         myProcess.Kill();
    }
      

  4.   

    有帖子解决这个问题了,你搜索一下
    大体意思就是你用到的每个COM对象都要显示new,然后释放,因为COM是引用计数的,这样才能清除。
    看看微软怎么说的
    http://support.microsoft.com/default.aspx?scid=kb;en-us;317109
    任何引用到的对象,比如Cellsj[i,j]之类的都要显示声明然后释放掉COM资源才可以
      

  5.   

    使用微软介绍的方法,通过编程释放!我试过有效!
    private void NAR(object o)
    {
        try
        {
            System.Runtime.InteropServices.Marshal.ReleaseComObject(o);
        }
        catch {}
        finally
        {
            o = null;
        }
    }