首页 新闻 搜索 专区 学院

如何彻底杀死EXCEL进程?

0
[已解决问题] 解决于 2008-03-26 19:03
<P>在使用EXCEL的COM对象生成报表的时候,进程中的EXCEL老是不能自行退出。</P> <P>找了一个杀死EXCEL进程的函数,但是只能在报表正常生成的时候才能杀死EXCEL进程,如果出现异常(如超时或用户自行关闭浏览器)则不能将EXCEL杀死,造成服务器进程中好多EXCEL进程,有时甚至在生成EXCEL时报进程错误,影响报表的正常导出。</P> <P>此问题已折磨很久,急待解决。。。</P>
stewen的主页 stewen | 初学一级 | 园豆:14
提问于:2008-03-24 21:46
< >
分享
最佳答案
0
最有效的方法就是下面这个方法: 1、对excel操作做成一个函数,然后调用此函数。在函数中调用GC.Collect();无用,因为GC不回收调用自己的那一段代码块! 2、在函数的下面调用GC.Collect();语句。你会发现EXCEL进程没有了! 例如: private void Import() { Excel.Application myExcel = new Excel.Application(); myExcel.Workbooks.Add(openFileDialog1.FileName); //........ //读取EXCEL文件,导入到数据库. //清除excel垃圾进程 myExcel.Workbooks.Close(); myExcel.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcel); myExcel = null; } private void ExcelImport() { Import(); GC.Collect(); }
使名扬 | 菜鸟二级 |园豆:230 | 2008-03-24 23:08
其他回答(1)
0
如果实在不行,来个霸王硬上弓吧:先用Process.Kill();如果等一段时间还没退出,用TerminateProcess. [DllImport("kernel32.dll", SetLastError=true)] [return: MarshalAs(UnmanagedType.Bool)] static extern bool TerminateProcess(IntPtr hProcess, uint uExitCode);
deerchao | 园豆:8167 (大侠五级) | 2008-03-25 00:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册