用户名: 密码: 免费注册 忘记密码? 加入收藏 | 设为首页
Excel在.Net下驻留内存的解决方法
学院首页 | 资讯中心 | 服务器软件 | 系统工具 | 系统软件 | 办公软件 | 聊天软件 | 多 媒 体 | 网页制作 | 网站运营 | 平面设计
艺术欣赏 | 数据库软件 | 程序开发 | 网络组建 | 源码下载 | 驱动下载 | 软件下载 | 电脑安全 | IT创业 | IT博客 | IT社区
硬件数码导航 | 硬件频道 | 本本频道 | MP3频道 | 相机频道 | 手机频道 | 显卡频道 | LCD 频道 | 音箱音频 | 行情 | 评测 | 导购
学院专题 软件 - 系统 - 办公 - 聊天 - 多媒体 - 网页制作 - IT创业 - 运营 - 平面 - 设计欣赏 - 数据库 - 程序 - 服务器 - 组网

 当前位置: 首页>>技术频道>>办公>>Excel教程>>正文

Excel在.Net下驻留内存的解决方法

日期:2007-4-19 2:38:46     来源:   编辑:   

这段时间在VS 2003 的WebForm 方式下对Excel 进行操作, 遇到一个最为头疼的问题就是对Excel操作完毕后Excel不能够正常关闭, 系统退出后, Excel总是驻留在内存中。 但是这段代码放到WinForm的程序中又没有问题。 在网上进行了查找也没有找到有效可行的办法。 经过无数次的尝试, 终于解决如下:

原来书写如下:

以下是引用片段:

privateExcel.Applicationm_app;

privateExcel.Workbookm_workbook;

this.m_app=newExcel.ApplicationClass();

this.m_app.DisplayAlerts=false;

this.m_workbook=this.m_app.Workbooks.Open(sFilePath,Missing.Value,

Missing.Value,Missing.Value,Missing.Value,

Missing.Value,Missing.Value,Missing.Value,

Missing.Value,Missing.Value,Missing.Value,

Missing.Value,Missing.Value,Missing.Value,

Missing.Value);

修改后如下:

以下是引用片段:

privateExcel.Applicationm_app;

privateExcel.Workbooksm_workbooks;

privateExcel.Workbookm_workbook;

this.m_app=newExcel.ApplicationClass();

this.m_app.DisplayAlerts=false;

m_workbooks=this.m_app.Workbooks;

this.m_workbook=this.m_workbooks.Open(sFilePath,Missing.Value,

Missing.Value,Missing.Value,Missing.Value,

Missing.Value,Missing.Value,Missing.Value,

Missing.Value,Missing.Value,Missing.Value,

Missing.Value,Missing.Value,Missing.Value,

Missing.Value);

同样对Sheet的操作如下

修改前如下:

以下是引用片段:

Excel._Worksheetworksheet1=null;

worksheet1=(Excel._Worksheet)this.m_workbook.Worksheets.get_Item(sSheetName);

修改后如下:

Excel.Sheetssheets=null;

Excel._Worksheetworksheet1=null;

sheets=this.m_workbook.Worksheets;

worksheet1=(Excel._Worksheet)sheets.get_Item(sSheetName);

发现区别了么?原来Workbooks, Worksheets这两个类没有被实例化就直接使用了, 造成该类不能够被回收。 最终造成Excel在内存的驻留。

最终以如下方式释放。
以下是引用片段:

privatevoidReleaseAllRef(Objectobj)

{

try

{

if(obj!=null)

{

while(Marshal.ReleaseComObject(obj)>1);

}

}

finally

{

obj=null;

}

}

privatevoidRelease()

{

if(m_app!=null)

{

m_app.Quit();

}

ReleaseAllRef(m_workbook);

m_workbook=null;

ReleaseAllRef(m_workbooks);

m_workbooks=null;

ReleaseAllRef(m_app);

m_app=null;

System.GC.Collect();

}

学习更多知识与技巧 请点击 网易学院陈刚

  ▼ 下一篇新闻 使用高级条件筛选Excel表中的数据
  ▲ 上一篇新闻 没有了        网友发表观点请进入=>



我要纠错】【进入论坛交流】【关闭此页】【进入博客

文章搜索
   
最新文章

 
·腾讯称QQ通讯信息密钥加密 不会被
·雅虎反超Google排名搜索第二
·中搜等十余家IT企业因流氓软件被
·盛大前员工克隆网游装备获暴利被
·凤凰网将向迅雷提供娱乐及宽带内
·信产部出手规范 新浪式企业法律架
·雅虎中国称旗下软件早已没有流氓
·中搜停止划词搜索与流氓软件决裂

广告赞助
相关文章 相关教程下载
焦点信息
·盛大前员工克隆网游装备获暴利被追刑责
·腾讯称QQ通讯信息密钥加密 不会被监听
·中搜等十余家IT企业因流氓软件被告上法庭
·凤凰网将向迅雷提供娱乐及宽带内容
·信产部出手规范 新浪式企业法律架构不得不改
·雅虎中国称旗下软件早已没有流氓问题
网友评论:(评论内容只代表网友观点,与本站立场无关!)
发表评论     Hard168社区推荐帖子
姓 名: *
* 请网友遵纪守法并注意语言文明。
IT人物推荐

王江民
马云
柳传志



关于本站    联络方式    广告服务    意见信箱    加入收藏   设为首页     -
本站部分内容来自网上,如有侵权部分,敬请告知,我们会在24小时内给予处理
版权所有:Hard168.Com,如需转载文章请与我们取得联系
京ICP备05063857号 Designed by Hard168.Com
Excel在.Net下驻留内存的解决方法