0

我正在使用 Groovy 1.7.0 的 Scriptom 扩展,在 Windows XP 下使用 Excel 2007 自动执行一些处理。

尽管我在 excel activeX 对象上调用了退出,但这似乎总是让 Excel 进程运行。(在 Scriptom 示例文档中也有一个关于这种现象的参考。)

代码如下:


import org.codehaus.groovy.scriptom.ActiveXObject;
def xls = new ActiveXObject("Excel.Application")
xls.Visible = true

// do xls stuff

xls.Quit()

可见的 excel 窗口确实消失了,但任务管理器中留下了一个 EXCEL 进程(并且每次运行脚本都会堆积更多进程)。

没有错误消息或异常。

谁能解释为什么 Excel 过程被遗忘了,有什么方法可以防止它发生吗?

4

2 回答 2

4

这有效:

xls.Quit()
Scriptom.releaseApartment()

javadocs 状态:

在某些情况下,JVM 可能会在清理完所有内容之前关闭,这会使自动化服务器(尤其是 Excel)挂起。在脚本退出之前调用它以从自动化服务器获得正确的行为。

于 2010-06-29T12:12:01.550 回答
0

看起来你不见了

xls.release();

就像在这里完成一样。

于 2010-05-05T20:04:08.837 回答