这是因为你调用了Excel.dll,就会产生

解决方案 »

  1.   

    每次调用之后要主动关闭进程      IntPtr   t   =   new   IntPtr(excel.Hwnd);   
          int   k   =   0;   
          GetWindowThreadProcessId(t,   out   k);   
          System.Diagnostics.Process   p   =   System.Diagnostics.Process.GetProcessById(k);   
          p.Kill(); 
      

  2.   


    你用什么方式调用这个动态库的?我的感觉是,程序调用Excel.dll中的某个函数时,导致该DLL被加载,而完成这个加载的进程就是Excel.exe,所以应该你退出程序后,所有的Excel.exe进程都会消失的。
      

  3.   

    http://blog.csdn.net/sunyou/archive/2005/08/22/461133.aspxhttp://www.blueshop.com.tw/board/show.asp?subcde=BRD20090928182129SHE&fumcde=&odr=cdt&odrtyp=0http://blog.bossma.cn/dotnet/csharp-exorpt-excel-process-kill/
      

  4.   

    回 
    computerfox
    我是引用了Excel.dll,但是我退出程序的时序,没有消息,skep99 说的对,每次用完之后应该要关闭进程,谢谢你们!~
      

  5.   

    用Kill()的话,会关闭打开所有的excel ,有么有什么好点的方法可以关闭对应的excel
      

  6.   

    回saybookcat :
    对,用Kill()会关闭所有的
      

  7.   

    private void CallExcel()
    {
        try
        {
          DoExcel()
        }catch
        {    }
        finally
        {
           GC.Collect();
        }
    }private void DoExcel()
    {
                _Application App = new Microsoft.Office.Interop.Excel.ApplicationClass();
                Microsoft.Office.Interop.Excel.Workbooks workbooks = App.Workbooks;
                Microsoft.Office.Interop.Excel.Workbook currentBook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
                Microsoft.Office.Interop.Excel.Worksheet currentSheet = (Microsoft.Office.Interop.Excel.Worksheet)currentBook.Worksheets[1];try
    {
    }catch
    {}
    finally
    {
                       currentBook.Saved = true;
                    workbooks.Close();
                    App.Quit();
    }只有在调用Excel外面的函数进行垃圾回收就可以关闭Excel,没有必要Kill,
      

  8.   

    之前用delphi调用Excel也有类似的问题
      

  9.   

    谢谢kasin000的回答,也谢谢大家,祝大家天天进步!