我在读取完Excel中的数据后,进程中总用一个叫做Excel的进程结束不了。请问用什么方法能结束这个进程呢?
解决方案 »
- asp ObjectDataSource选择业务对象是空的。
- 如何将页面中的内容(包括Image控件中的图片)导出到word中
- 遍历GridView的问题
- 使用FCKEditor上传时报错
- 如何在调用Web控件是触发该控件的javascript函数
- 菜鸟问题 onmouseover
- 告急!Visual Studio .NET 已检测到指定的 Web 服务器运行的不是 ASP.NET 1.1 版。
- 求代码
- 请问我用log4net最简单的配置,为什么不生成日志文件?
- 发送邮件的问题,高手请进!!
- 把javascript封装到htc中有什么好处?
- 急求,分页<PagerStyle Mode="NumericPages" ></PagerStyle>中的样式如何定义?
oExcel.Workbooks.Close(); oExcel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject((object)oSheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject((object)oBook);
System.Runtime.InteropServices.Marshal.ReleaseComObject((object)oExcel);
oSheet = null;
oBook = null;
oExcel = null;
GC.Collect();参考了很多资料得到的句子,但在我机器上行不通
System.IO.FileStream fileStream = System.IO.File.OpenRead(filePath);
byte[] fileData = new byte[fileStream.Length];
fileStream.Read(fileData,0,(int)fileStream.Length);
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.AddHeader("Content-Type","application/vnd.ms-excel");
oXLSFileName = System.Web.HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(oXLSFileName));
HttpContext.Current.Response.AddHeader("Content-Disposition","inline;filename=" + System.Convert.ToChar(34) + oXLSFileName + System.Convert.ToChar(34));
HttpContext.Current.Response.AddHeader("Content-Lenth",fileStream.Length.ToString());
HttpContext.Current.Response.BinaryWrite(fileData);
fileStream.Close();
System.IO.File.Delete(filePath);
HttpContext.Current.Response.End();这是把Excel显示的语句,可以结束进程,期待高手说明一下
读数据
finally
excel.close
this.Dispose();
GC.Collect();
System.Diagnostics.Process[] myProcesses ;
myProcesses = System.Diagnostics.Process.GetProcessesByName("EXCEL");
foreach(System.Diagnostics.Process myProcess in myProcesses)
{
myProcess.Kill();
}
大体意思就是你用到的每个COM对象都要显示new,然后释放,因为COM是引用计数的,这样才能清除。
看看微软怎么说的
http://support.microsoft.com/default.aspx?scid=kb;en-us;317109
任何引用到的对象,比如Cellsj[i,j]之类的都要显示声明然后释放掉COM资源才可以
private void NAR(object o)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(o);
}
catch {}
finally
{
o = null;
}
}