首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何强制Excel进程在COM自动化后退出?

如何强制Excel进程在COM自动化后退出?
EN

Stack Overflow用户
提问于 2012-01-25 21:36:12
回答 3查看 1.2K关注 0票数 1

在PHP中,我使用COM-object创建一个XLS文件。

代码语言:javascript
复制
$excel = new COM("Excel.Application") or die("Excel is not installed!");
$excel->WorkBooks->Add();
...
$excel->WorkBooks[1]->SaveAs($path);
$excel->Quit();
$excel->Release();
$excel = null;

运行此代码后,Excel.exe进程仍将在内存中保留约6分钟。如何强制此进程立即退出?

EN

回答 3

Stack Overflow用户

发布于 2012-01-26 01:48:47

您正在使用COM对象,所以您一定是在谈论Windows上的php。基本上,您可以使用命令行工具taskkill终止任务。可以使用php命令shell_exec调用它,如下所示

代码语言:javascript
复制
shell_exec('taskkill /F /IM "excel.exe"');

如果您没有权限(但我认为您应该有权限,因为您启动了此进程),请使用runas运行cmd行。

但!您使用的是php,所以如果您在web环境中运行此程序,并且人们同时访问您的网站,那么您可能有多个Excel实例在运行。如果是这样的话,你就得找出你想杀的是哪一个。

票数 3
EN

Stack Overflow用户

发布于 2012-01-26 02:04:16

该进程会停留一段时间,以防另一个"Excel.Application“对象被请求,在这种情况下,我们可以避免启动新进程和加载所有all的成本。

我只会把它当做一个特色。

票数 0
EN

Stack Overflow用户

发布于 2012-07-31 22:21:28

还有另一种方法..。尝试取消初始化COMS。不是只做一次,而是做四次。这是通过试验和错误建立的,所以除了它可以工作之外,我没有有效的理由。然而,这并不总是有效的。它可能在你的情况下就行得通

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

https://stackoverflow.com/questions/9003597

复制
相关文章

相似问题

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