问题现象:
这个方法在PC上短时间没有问题,但是运行一段时间就出现了问题。
1. 如果使用excel组件,则报错:
com.jacob.com.ComFailException: Invoke of: Open
Source: Microsoft Office Excel
Description: 类Workbooks的Open方法无效
解决:
之前调查的方向一直跑偏,最后帮到我的是这篇:
如何解决Windows Server 2008 服务启动不能调用Office DCOM转Word的问题
Windows Vista/2008改变了COM对象默认的交互方式为“非交互”型的。Console启动本身支持应用交互,但service模式下就不行了。所以需要修改word DCOM默认的标识,改为“交互式用户”模式,即可正常调用了。
我的场合就是,把 “Microsoft Excel 应用程序”和“Microsoft Excel 工作簿”两项的标识改成交互式用户模式,就解决了这个问题。
问题现象:
打开的EXCEL进程无法关闭,即使调用了app.involke('Quit',new Variant[]{})。
解决:
参考文章
jacob操作office分享
发现是我在方法中没有使用来初始化线程和释放线程。加上以后就解决了。
- ComThread.InitSTA(true); 在这里把参数定义为true,否则会引起锁的问题
- ComThread.Release(); 释放com线程