oExcel.Quit();
//清除对象
System.Runtime.InteropServices.Marshal.ReleaseComObject(oWorksheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(oWorkbook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(oExcel);
oWorkbook=null;
oExcel=null;
System.GC.Collect();===============
差不多了。
//清除对象
System.Runtime.InteropServices.Marshal.ReleaseComObject(oWorksheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(oWorkbook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(oExcel);
oWorkbook=null;
oExcel=null;
System.GC.Collect();===============
差不多了。
解决方案 »
- 请教一个List<string>或List<int>字符组合的算法
- 如何不让tooltip不要再闪烁,查了好久都没有结果,强人指点啊
- 关于C#定时获取UDP端口数据的问题
- 关于LOCK的问题
- 如何调试或输出带SqlParameter的sql语句?
- 图片处理缩略图的时候出现了个异常
- 【请教】重绘了窗体的边框设置其颜色后,出现了类似闪动的效果,DoubleBuffer已经设置为ture了,还是不行,谢谢啊
- 帮我看下这个错误是什么意思?
- 索引超出范围。必须为非负值并小于集合大小????新手
- 救命,急了,请问怎样把一个xml字符格式变量加载入dataset
- 请高手指教!
- 关于treeView 的问题!请指教!
我试过了,非常有效:)
Excel.Application.Quit
foreach(System.Diagnostics.Process p in System.Diagnostics.Process.GetProcesses())
{
if(p.ProcessName.ToUpper() == "EXCEL")
{
p.Kill();
}
}
http://support.microsoft.com/?id=317109
/// <summary>
/// 用于销毁Excel对象,并且实行强制垃圾回收
/// </summary>
private void ReleaseExcel(ref Excel.Application m_xlsExcelApp)
{ System.Runtime.InteropServices.Marshal.ReleaseComObject(m_xlsExcelApp);
m_xlsExcelApp=null;
GC.Collect();
GC.WaitForPendingFinalizers();
}
需要的Excel进程也退出呢?
应该是可以做到分别退出的。
Excel.Application.Disconnect();
Excel.Application.Quitforeach(System.Diagnostics.Process p in System.Diagnostics.Process.GetProcesses())
{
if(p.ProcessName.ToUpper() == "EXCEL")
{
p.Kill();
}
}
xlApp.Quit();
xlApp=null;
xlBook=null;
xlSheet=null;
我试过了,非常有效:)
---------------------------------------------------
按照这个方法,确实可以正常退出,但是我觉得实现起来有困难
比如说:Range.Rows.count
这时候他认为Rows也是间接引用的,就退出不了进程,但是excel的对象模型里没有Rows object,他只是一个属性,我怎么去直接声明他呢