首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActiveXObject - Excel.Application不释放资源

ActiveXObject - Excel.Application不释放资源
EN

Stack Overflow用户
提问于 2013-02-22 22:51:26
回答 1查看 4.3K关注 0票数 1

我已经开发了这个脚本,我在其中编写了一个xls工作表。

代码语言:javascript
复制
var excelFile = "C:\\TestActiveX\\Test.xls";
function readExcelFileAndUpdateView()
{
    var w =new ActiveXObject("Excel.Application");      
    w.Workbooks.Open(excelFile);  
    var objWorksheet1 = w.Worksheets(1);    
    var name =objWorksheet1.Cells(1,2);
    if(name==null){
        name="";
    }

    var objWorksheet2 = w.Worksheets(2);    
    var surname = objWorksheet2.Cells(1,2);
    if(surname==null){
        surname="";
    }

    var str = "Name is :"+name+"<br/>Surname is :"+surname;

    document.getElementById("txtAreaXLS").innerHTML=str;    
    w.Application.Quit();
    w.Quit();
    w = null;               
}

问题是,当这个函数完成执行时,我的Windows任务管理器中有两个EXCELL对象在运行。在我的函数末尾释放资源似乎不起作用。

我也尝试过objWorksheet1.close(true);w.Workbooks.Close(true);w.ActiveWorkbook.Close(true);,但都没有成功。

有没有人知道哪些是开放对象,我怎么才能摆脱它们?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-22 23:24:09

ActiveX可能会有一些奇怪的行为。您需要确保将对ActiveX对象(和子对象/成员)的所有引用都设置为null。在您的代码中,您设置了w= null,但仍然引用了objWorksheet1、name、objWorksheet2、surname。也将这些设置为null。我建议使用try/catch/finally块,在这个块中,您可以将finally块中的值设为空。

在CodeProject上有一篇很好的文章推荐:保存、关闭、退出、空。尽管如此,除非您已经将对ActiveX对象及其成员的所有引用都设为空,否则这并不重要。

本文的第12和13节有一些很好的例子:http://www.codeproject.com/Articles/404688/Word-Excel-ActiveX-Controls-in-ASP-NET

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15026827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档