2
function gbid(s) {
    return document.getElementById(s);
}

function GetData(cell,row) {
    var excel = new ActiveXObject("Excel.Application");
    var excel_file = excel.Workbooks.Open("Z:/SunCenter/Medicare Customer Experience/Hub/CaliforniaHUB/Plans/H0562_2013_082_EOC.xlsx");
    var excel_sheet = excel.Worksheets("Sheet1");

    gbid('span1').innerText = excel_sheet.Cells(1191,1).Value;  
    gbid('span2').innerText = excel_sheet.Cells(1192,1).Value;  
    gbid('span3').innerText = excel_sheet.Cells(1192,3).Value;  

    excel_file.Close()
    excel.Quit()
}

每当 javascript 运行(onload)时,它都会在 taskmanager/Processes 中创建一个进程。问题是使用后它不会关闭它。当我再次运行它时,它会创建另一个。现在它只是从工作正常的excel文件中提取信息,但它不会关闭任务管理器中的exe文件。我以为这样excel_file.close就可以了,我什至放了另一个excel.quit,以防万一。抱歉,我只是想确保它有效。我什至现在已经拿走了一个,以防万一发生冲突,但 nada。有什么帮助吗?

4

2 回答 2

4

你需要打电话excel.Application.Quit();而不是仅仅打电话excel.Quit();

于 2013-06-25T23:35:14.597 回答
1

根据微软的说法,由于您在调用时仍然持有对 excel 的引用Quit(),因此 Excel 无法干净地关闭。建议在短暂等待后调用Quit()、设置excel = null、然后运行:CollectGarbage

var idTmr = "";

function GetData() { 
    //...

    excel.Quit(); 
    excel = null;
    idTmr = window.setInterval("Cleanup();",1);
}

function Cleanup() {
    window.clearInterval(idTmr);
    CollectGarbage();
}

原始来源:

http://support.microsoft.com/kb/266088

Windows 7 小工具未释放 ActiveX 对象

于 2013-06-26T00:26:58.993 回答