学习

解决方案 »

  1.   

    http://community.csdn.net/Expert/topic/4252/4252815.xml?temp=.2707636
      

  2.   

    workbooks.close false
    ExcelApplication=nothing
      

  3.   

    基本不能,这是.NET的一个很大的问题,除非杀进程
      

  4.   

    Public Sub KillProcess(ByVal processName As String)
            For Each thisproc As Process In Process.GetProcessesByName(processName)
                If thisproc.CloseMainWindow = False Then
                    thisproc.Kill()
                End If
            Next
        End Sub
      

  5.   

    殺進程﹐會將所有的Excel進行干掉的。這樣子不被客戶抱怨死才怪﹕
    教你一個方法﹕調用后立即使用GC回收它就可以。OpenNewExcelApp();
    GC.Collect();OpenNewExcelApp();
    {
          Excel.ApplicationClass  exec= new Excel.ApplicationClass();
          exec.Visible = true ;
          try
          {
               你的代碼區
          }
          catch(Exception E)
          {
                MessageBox.Show(E.Message);
           }
           finally
           {
                if(exec!=null)exec = null;
           }
    }
      

  6.   

    一定要記得將  excel Null 掉才會回收的。
    也就是上面的 finally語句塊
      

  7.   

    http://blog.joycode.com/kaneboy/archive/2005/11/04/66364.aspx
      

  8.   

    如果没有必要可以设置myExcel.Visible = true;人工关闭
    另外杀死进程能杀死不同id号的进程就好了,学习中
      

  9.   

    我这样做是成功的,要一级一级的逐项释放:System.Runtime.InteropServices.Marshal.ReleaseComObject((object)m_objQryTable);
    m_objQryTable = null;System.Runtime.InteropServices.Marshal.ReleaseComObject((object)m_objQryTables);
    m_objQryTables = null;System.Runtime.InteropServices.Marshal.ReleaseComObject((object)m_objRange);
    m_objRange = null;System.Runtime.InteropServices.Marshal.ReleaseComObject((object)m_objSheet);
    m_objSheet = null;System.Runtime.InteropServices.Marshal.ReleaseComObject((object)m_objSheets);
    m_objSheets = null;m_objBook.Close(false,m_objOpt,m_objOpt);
    System.Runtime.InteropServices.Marshal.ReleaseComObject((object)m_objBook);
    m_objBook = null;m_objBooks.Close();
    System.Runtime.InteropServices.Marshal.ReleaseComObject((object)m_objBooks);
    m_objBooks = null;m_objExcel.Quit();
    System.Runtime.InteropServices.Marshal.ReleaseComObject((object)m_objExcel);
    m_objExcel = null;GC.Collect();
    GC.WaitForPendingFinalizers();