200分求够能杀掉excel进程的方法
//这个是我定义的操作EXCEL的两个对象: 
 Excel.Application   xlApp   =   new   Excel.Application(); 
 Excel.Workbook   xlBook   =   xlApp.Workbooks.Add(userpath); 
 ...   ... 
 //这个是我保存修改后的EXCEL: 
 xlApp.Application.DisplayAlerts   =   false; 
 xlBook.SaveAs(productpath   +    "\\BaselineProduct.xls ",   xlApp.ActiveWorkbook.FileFormat,    " ",    " ",   xlApp.ActiveWorkbook.ReadOnlyRecommended,   xlApp.ActiveWorkbook.CreateBackup,   XlSaveAsAccessMode.xlNoChange,   xlApp.ActiveWorkbook.ConflictResolution,   false,    " ",    " ",    " "); 
 //以下就是我杀EXCEL进程的方法: 
 if   (xlBook   !=   null) 
 { 
             System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook); 
             xlBook   =   null; 
 } 
 if   (xlApp   !=   null) 
 { 
             System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp); 
             xlApp.Quit(); 
             xlApp   =   null; 
 } 
 GC.Collect();   
 用以上的方法会有2个问题: 
 1、在Debug状态下始终会有一个EXCEL进程,程序无法杀掉,但可以到任务管理器中用手动杀掉。 
 2、发布以后创建一个操作EXCEL的对象,任务管理器就会有多少EXCEL进程,而且这些进程还无法用手动杀掉,用手动杀提示信息为 "拒绝访问 "。   
 哪位大哥大姐有好的方法解决了我的问题另开帖再送100分,谢谢。 
------解决方案--------------------Dim pProcess As System.Diagnostics.Process   
             For Each pProcess In System.Diagnostics.Process.GetProcesses() 
                 If pProcess.ProcessName.ToString() =  "EXCEL " Then pProcess.Kill() 
             Next
------解决方案--------------------把你杀进程的代码放到一个方法里面,然后调用该方法,在方法后面再进行垃圾收集。。 
 原来我也遇到这个问题,是这么解决的。。。。
------解决方案--------------------最好是把你的操作excel的作为一个方法。。在方法调用之后进行垃圾收集。。
------解决方案--------------------你调用一个cmd来杀 
 tskill EXCEL.EXE   
------解决方案--------------------你把垃圾收集都放在方法里面去了啊。。 
 要放在方法外面。。
------解决方案--------------------二楼的方法也是可行的。。 
 但是可能会关闭原来用户打开的其他excel进程。。
------解决方案--------------------我也碰到过,解决的方法和JoneG(琼琼) 说的一样,只是我是把所有excel操作放到一个方法里(包括xlApp.Quit();等),然后在方法外面再GC.Collect(); 
 如 public voic excel操作处理(string path) 
 { 
 ........ 
 }   
 调用处 
 excel操作处理(strpath; 
 GC.Collect(); 
 这样应该就可以了 
------解决方案--------------------如果还不行就加System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp); 这句试试,就是加在xlApp.Quit();这句后面,一般我是不加这句的。 
------解决方案--------------------最好不要杀进程   
 public void aaa() 
 { 
     bbb(); 
     System.GC.Collect();  //在这里调用垃圾收集 
 }   
 public void bbb() 
 { 
    操作excel(); 
    该怎么处理还是怎么处理 
 }   
 就OK了
------解决方案--------------------大哥 代码好长... 
 2003的么?
------解决方案--------------------同意bitpolar(独自看天)的。。 
 里面不需要定义那个进程的东西。。。。 
 用你原来的代码,只是在daochu_all方法调用之后写个GC.Collect()就行了
------解决方案--------------------告诉你一个方法:找到当前的execl进程ID,然后调用进程直接杀死它,这样就不会误杀其他的excel进程。