我開發了這個腳本,我在xls工作表上編寫。ActiveXObject - Excel.Application不釋放資源
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任務管理器運行2個EXCELL對象。在我的功能結束時釋放資源似乎不起作用。
我也試過objWorksheet1.close(true);
和w.Workbooks.Close(true);
和w.ActiveWorkbook.Close(true);
沒有運氣。
有沒有人有線索是開放的對象,我怎麼能擺脫它們?
雖然你已經設置W = NULL,你還是要objWorksheet1,姓名,objWorksheet2,姓引用。你有沒有嘗試將它們設置爲null,所以你對任何excel對象都有零引用? – tgolisch 2013-02-22 15:00:26
如果我將引用設置爲null,那麼對象仍然存在於內存中。 'objWorksheet1 = null; objWorksheet2 = null;' – MaVRoSCy 2013-02-22 15:08:02
ActiveX跟蹤所有對自身的引用,並且只會在引用計數變爲零時從內存中釋放它自己。 – tgolisch 2013-02-22 15:25:10