用new Excel.Application(); 打开的Excel进程,如何能关闭该进程。再现等待

skygzj 2005-01-13 04:08:03
在对Excel操作中
定义
private Excel.Application m_objExcel = null;
m_objExcel = new Excel.Application();

在关闭时,如何关闭启动的进程
...全文
793 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyiding23 2005-03-15
  • 打赏
  • 举报
回复
怎么直白的问题为什么老是有人要问,还老是有人回答不能清除
其实很简单,因为垃圾回收不回收调用它的这一块
你把
excel操作做成一个函数
在使用中调用这个函数
函数后面跟一个GC.Collect();
ascopi 2005-02-16
  • 打赏
  • 举报
回复
mark
dazhu2 2005-01-23
  • 打赏
  • 举报
回复
自己杀掉EXCEL进程:

Process[] myp;

myp=Process.GetProcessesByName("EXCEL");
if(myp.Length>0)
{
foreach(Process B in myp)
{
if(!B.HasExited)
B.Kill();
System.Windows.Forms.Application.DoEvents();
}
}
diamondex 2005-01-23
  • 打赏
  • 举报
回复
mark
egxsun 2005-01-20
  • 打赏
  • 举报
回复
用simon8181的方法虽然可以杀死Excel进程,但是不是你的程序打开的也被关闭了,还是用
RevOff._Shutdown();
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
xlApp = null;
System.GC.Collect(); //强行释放
比较好
simon8181 2005-01-20
  • 打赏
  • 举报
回复
'Dim myProcesses() As Process
'Dim myProcess As Process

'myProcesses = Process.GetProcessesByName("EXCEL")
'For Each myProcess In myProcesses

' myProcess.Kill()
'Next
japy0312 2005-01-20
  • 打赏
  • 举报
回复
用System.GC.Collect(); 始终都还有一个没有释放的excel进程,试试这个强行杀死它
using System.Diagnostics;
/// <summary>
/// 杀死进程
/// </summary>
/// <param name="processName"></param>
private void KillProcess(string processName)
{
//得到所有打开的进程
Process myproc= new Process();
int i=0;
string machineName=this.Server.MachineName;
try
{
foreach (Process thisproc in Process.GetProcessesByName(processName,machineName))
{
if(!thisproc.CloseMainWindow()&&i==0)
{
thisproc.Kill();
i++;
}
}
}
catch
{
}
}
rocklabzhang 2005-01-14
  • 打赏
  • 举报
回复
不好意思,我再调了调,好象只有下面组合起来才能弄死进程:
//以下步骤执行杀死Excel进程的功能
RevOff._Shutdown();
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
xlApp = null;
System.GC.Collect(); //强行释放
rocklabzhang 2005-01-14
  • 打赏
  • 举报
回复
楼主觉得有用的话,就帮忙顶顶下面这篇,也是excel,很简单,只不过我是菜鸟:
http://community.csdn.net/Expert/topic/3726/3726321.xml?temp=9.670436E-03
呵呵
rocklabzhang 2005-01-14
  • 打赏
  • 举报
回复
我用了楼上的方法,结果是杀不死
我用的是Microsoft的vsto开发excel,vsto提供了一个_shutdown方法,代码如下:
public void _Shutdown()
{
thisApplication = null;
thisWorkbook = null;
}
只要在打开excel之后显示调用这个方法,就能杀掉进程,我刚刚试过,其他方法好象都不骤效
我的部分代码:
Excel.Application xlApp = new Excel.ApplicationClass();


object Nothing = System.Reflection.Missing.Value;//空值

RevExcel.OfficeRev RevOff = new RevExcel.OfficeRev( );
RevOff._Startup( xlApp, xlApp.Application.Workbooks.Add(true) ); //自创代码,哈哈~~~~~~~~~~~~~
RevOff.SetupWorksheet( /*this.revsInfo*/ );
RevOff.ResetWorkbook();
//RevOff.ThisWorkbook_Open(); //不能在外面调用此方法,不然要出错!!
xlApp.Visible = true;
//以下步骤执行杀死Excel进程的功能
RevOff._Shutdown(); //这句才能真正的杀死进程
  • 打赏
  • 举报
回复
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
excelApp=null;
System.GC.Collect();//在Excel没有关闭之前Excel实例释放后,需要调用此句代码,Excel实例才能自动释放
egxsun 2005-01-13
  • 打赏
  • 举报
回复
用两个方法,一个方法foun1执行你的操作,并关闭,另外一个方法foun2:
provate void foun2()
{
foun1();
GC.Collect();//强行销毁

}
sunyou 2005-01-13
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/3347/3347007.xml?temp=.5343744
xuchi 2005-01-13
  • 打赏
  • 举报
回复
m_objExcel = null;
GC.Collect();//强行销毁
skygzj 2005-01-13
  • 打赏
  • 举报
回复
m_objExcel.Quit();
不能关闭该进程,是关闭不掉的
JafyLiu 2005-01-13
  • 打赏
  • 举报
回复
m_objExcel.Quit();

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧