ActiveXObject(Excel)在Procces <javascript>中保留EXCEL.EXE * 32

时间:2017-11-17 13:04:01

标签: javascript excel

var Excel = new ActiveXObject('Excel.Application');

Excel.Visible = false;
var Excel_file = Excel.Workbooks.Open(Worksheet);
}

if(x == 2)
{
Excel_file.close(false);
Excel.Quit();
Excel.Application.Quit();
Excel = null;
Excel_file = null;

window.setTimeout(CollectGarbage, 10);
//Excel.DisplayAlerts = false;
}

Windows Task Manager Display

我使用ActiveXObject在幕后打开excel应用程序,执行我的功能(在别处定义和调用),然后关闭它。问题是通过任务管理器,每次运行程序时,它都会在进程部分中创建一个新的EXCEL.EXE * 32实例。

此脚本位于网页上,并且会在一天中经常运行。每次程序运行时都不可能创建它的不同实例。

我试图像其他人推荐的那样使用未记录的“CollectGarbage”,但它仍然无法解决问题。

有什么想法吗? 谢谢。

1 个答案:

答案 0 :(得分:0)

您可以使用相同的activex对象终止任务管理器中的任务。试试下面的

var WshShell = new ActiveXObject("WScript.Shell");
var oExec = WshShell.Exec("taskkill /F /IM EXCEL.exe");

TASKKILL

结束一个或多个进程(按进程ID或图像名称)。

语法       TASKKILL [/ S system [/ U username [/ P [password]]]]          {[/ FI filter] [/ PID processid | / IM imagename]} [/ F] [/ T]

选项     / S system要连接的远程系统。

/U   [domain\]user    The user context under which
                      the command should execute.

/P   [password]       The password. Prompts for input if omitted.

/F                    Forcefully terminate the process(es).

/FI  filter           Display a set of tasks that match a
                      given criteria specified by the filter.

/PID process id       The PID of the process to be terminated.

/IM  image name       The image name of the process to be terminated.
                      Wildcard '*' can be used to specify all image names.

/T                     Tree kill: terminates the specified process
                       and any child processes which were started by it.

过滤器应用以下过滤器之一:

         Imagename   eq, ne                  String
         PID         eq, ne, gt, lt, ge, le  Positive integer.
         Session     eq, ne, gt, lt, ge, le  Any valid session number.
         Status      eq, ne                  RUNNING | NOT RESPONDING
         CPUTime     eq, ne, gt, lt, ge, le  Time hh:mm:ss
         MemUsage    eq, ne, gt, lt, ge, le  Any valid integer.
         Username    eq, ne                  User name ([Domain\]User).
         Services    eq, ne                  String The service name
         Windowtitle eq, ne                  String
         Modules     eq, ne                  String The DLL name