求彻底释放Excel的方法

wangfeng0215 2006-02-06 11:16:52
如题
...全文
449 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangfeng0215 2006-02-10
  • 打赏
  • 举报
回复

wangfeng0215 2006-02-09
  • 打赏
  • 举报
回复
up
wangfeng0215 2006-02-08
  • 打赏
  • 举报
回复
我使的是office2000,这个问题没法解决了吗
ChengKing 2006-02-07
  • 打赏
  • 举报
回复
在Office2003中怎样调用,Excel,word等程序呢?!需要添加什么引用呢??!

Excel常见问题及其操作:
http://blog.csdn.net/ChengKing/archive/2005/11/29/539514.aspx
wangfeng0215 2006-02-07
  • 打赏
  • 举报
回复
各位帮帮忙亚
挨打要站稳 2006-02-07
  • 打赏
  • 举报
回复
在Office2003中怎样调用,Excel,word等程序呢?!需要添加什么引用呢??!
songyuan 2006-02-07
  • 打赏
  • 举报
回复
学习
wangfeng0215 2006-02-07
  • 打赏
  • 举报
回复
office2003中的Open参数都是什么意思呀?我想升级到2003
机器人 2006-02-06
  • 打赏
  • 举报
回复
_Excel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(_Excel);
GC.Collect();

以上三句就可以了。其他都是多余。
henryfan1 2006-02-06
  • 打赏
  • 举报
回复
我也遇到这样的问题.
顺便也把代码贴出来希望有人能帮忙看下问题在那里,以下代码在ASP.NET下不能释放.

public class ExcelDocument:IDisposable
{
Excel.Application _Excel = new Excel.ApplicationClass();
Excel.Workbook _Book = null;
public ExcelDocument()
{
//
// TODO: 在此处添加构造函数逻辑
//
_Book =_Excel.Workbooks.Add(Type.Missing);
}
private PrintDocument mDataTemplate = new PrintDocument();
public PrintDocument DataTemplate
{
get
{
return mDataTemplate;
}
set
{
mDataTemplate = value;
}
}
private System.Data.DataTable mDataSource = null;
public System.Data.DataTable DataSource
{
get
{
return mDataSource;
}
set
{
mDataSource = value;
}
}
public void Execute()
{
if(DataTemplate != null)
{

_ActiveSheet = (Worksheet)_Book.Sheets.get_Item(1);
if(DataSource != null)
DataTemplate.DataSource = DataSource.DefaultView ;
DataTemplate.ItemBound += new EventItemBound(Template_ItemBound) ;
DataTemplate.BindData();

}
}
public void Save(string file)
{
_Book.SaveAs(file,Excel.XlFileFormat.xlXMLSpreadsheet,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing);

}
#region IDisposable 成员
private bool disposed = false;

~ExcelDocument()
{

Dispose(false);
}

public void Dispose()
{
Dispose(true);

GC.SuppressFinalize(this);
}


private void Dispose(bool disposing)
{

if(!this.disposed)
{

if(disposing)
{

}
_Book.Close(false, Type.Missing, Type.Missing);
_Excel.Quit();

System.Runtime.InteropServices.Marshal.ReleaseComObject(_Book);
System.Runtime.InteropServices.Marshal.ReleaseComObject(_Excel);
_Book = null;
_Excel = null;


}
disposed = true;
}



#endregion
private void Template_ItemBound(object source,ExportBases.ItemBoundArgs e)
{
foreach(ExportBases.CellItem cell in e.Row.Cells)
{
SetRangeStyle(_ActiveSheet.get_Range(cell.GetCellAddress(e.RowIndex),Type.Missing),cell);
_ActiveSheet.get_Range(cell.GetCellAddress(e.RowIndex),Type.Missing).Value2 = cell.GetValue(e);
}
}
private Worksheet _ActiveSheet;
public static void Export(PrintDocument document,string file)
{
using(ExcelDocument write = new ExcelDocument() )
{
write.DataTemplate = document;
write.Execute();
write.Save(file);
}
GC.Collect();
GC.WaitForPendingFinalizers();
}

}
kqh0319 2006-02-06
  • 打赏
  • 举报
回复
樓上正解
lidong6 2006-02-06
  • 打赏
  • 举报
回复
ActiveWorkbook.close ;
ExcelApp.quit;
ExcelApp=null;
lidong6 2006-02-06
  • 打赏
  • 举报
回复
ExcelApp.quit
wangfeng0215 2006-02-06
  • 打赏
  • 举报
回复
都关了
长江支流 2006-02-06
  • 打赏
  • 举报
回复
private void CallExcel()
{
//这个地方调用楼上读写Excel的方法就可以了
GC.Collect();
}


因为GC不会回收他所在的部分,所以,需要专门再用个过程调用 再释放

楼主可以下载MIS金质打印通(EXCEL专版)试试。
长江支流 2006-02-06
  • 打赏
  • 举报
回复
private void CallExcel()
{


}
sunyou 2006-02-06
  • 打赏
  • 举报
回复
好像是office2000的问题,新版office的使用一下三句:
_Excel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(_Excel);
GC.Collect();
详细参考http://blog.csdn.net/sunyou/archive/2005/08/22/461133.aspx
luoboqingcai 2006-02-06
  • 打赏
  • 举报
回复
然后再用上面的三句话。
哈~
luoboqingcai 2006-02-06
  • 打赏
  • 举报
回复
把所开启的所有的对象都关闭。

sheet等等。
机器人 2006-02-06
  • 打赏
  • 举报
回复
_Excel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(_Excel);
_Excel = null; // <== 比如这句,加上之后,GC就不会工作,反而失效。
GC.Collect();
加载更多回复(1)

110,537

社区成员

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

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

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