com对象的Release
Excel.Application oExcel;
Excel.Workbook oBook;
Object oMissing = System.Reflection.Missing.Value;
oExcel = new Excel.Application();
oBook = oExcel.Workbooks.Add(oMissing);
for (int i=1;i <=4;i++)
{
oExcel.Cells[i,1]=i.ToString();
oExcel.Cells[i,2]= "'bbb2 ";
oExcel.Cells[i,3]= "'ccc3 ";
oExcel.Cells[i,4]= "'aaa4 ";
}
oBook.Saved = true;
oExcel.UserControl = false;
string filename = DateTime.Now.Ticks.ToString();
string mm=Server.MapPath( ".")+ "\\" + filename + ".xls";//服务器保存地址
oExcel.ActiveWorkbook.SaveCopyAs (mm);
oExcel.Quit();
//GC.Collect();
Response.Redirect(filename+".xls");
+++++++++++++++++++++++
这段代码能够实现导出文件的功能,但是如果察看Windows任务管理器,就会发现有许多EXCEL.EXE进程
+++++++++++++++++++++++
在.net中,允许程序员显式地自己调用com的Release方法,这个方法经过.net的包装,叫做System.Runtime.InteropServices.Marshal.ReleaseComObject,在上面的代码中,
调用“GC.Collect();”之前,先调用
“System.Runtime.InteropServices.Marshal.ReleaseComObject((object)oExcel);”,
把引用计数减一,这样,引用计数就变成了零,垃圾回收发生时,oExcel所对应的com对象,就被扫地出门。
++++++++++++++++++++++

浙公网安备 33010602011771号