使用jacob报错:com.jacob.com.ComFailException: Can't get object clsid from progid

之前自己写过一篇java 使用jacob+jacob工具类实现html页面导出word

当时完全能导出到word文档的,也没有出现com.jacob.com.ComFailException: Can't get object clsid from progid这个问题,但是好久没在本地跑这个项目了,这个项目不仅要把jacob的一些包放在特定目录还要安装WPS,但是这么长时间没跑这个项目也没在导出过页面,我的WPS也卸载过几次,现在突然跑起来不能导出页面了。而且错误定位在下段代码的第4行:

 1     public MSOfficeGeneratorUtils(boolean visible) {
 2         if (this.word == null) {
 3             // 初始化Microsoft Office Word 实例
 4             this.word = new ActiveXComponent("Word.Application");
 5             this.word.setProperty("Visible", new Variant(visible));
 6             // 禁用宏
 7             this.word.setProperty("AutomationSecurity", new Variant(3));
 8         }
 9         if (this.documents == null)
10             this.documents = word.getProperty("Documents").toDispatch();
11     }

为了解决这个问题,我去网上找了半天,我肯定是确保我之前用的jacob的包和dll文件没问题,而且都放在了该放的目录下。没办法我首先选择了重装WPS,重装了WPS还是没能解决,还是报这个错,我郁闷了,卸载WPS,重启电脑在下载安装,还是不行!这下我到处去网上找啊,网上解决这个问题也不多,最后我将问题定位在Word.Application在注册表中找不到。我首先打开注册表cmd-regedit然后在注册表中 编辑-查找Word.Application,最终没有任何结果,我很纳闷!明明我的计算机上word能使用,但是为啥注册表里没有信息!!!难受!我一开始下载WPS是在软件管家里下的,现在我不在相信软件管家了,心一狠!又在软件管家里点击了卸载WPS,但是在卸载过程中我无意间发现了下面这张图:

之前我都是直接点击最后一个的,但是这次我点击了WPS多次异常关闭,重新安装,然后它就跳转到一个网页下载链接,我顺着这个链接下载重装了一个新的WPS安装了一下,这个WPS我仔细对比了一下,明显和我之前用的不同了,看下面这张图:

我一开始安装的是下面一个W.P.S,明显和上面这个对比像是一个简洁版,现在我安装上面一个版本后,在到注册表里搜索:Word.Application,这回找到了!然后我在此跑起我的程序,哈哈问题解决!

  总结一下:在之前那篇使用jacob导出页面到word文档的文章中是没有bug的,能导出,但是由于你安装的word可能是那种简洁版或非绿色版,会导致在注册表里找不到Word.Application,就会出现标题里说的那个bug,最好的方式是去WPS官网下载【我没试过,但是看官网的大小和我重装的大小差不多】,或者就是使用我那种方式在软件管家里选择重装。

 

前进时,请别遗忘了身后的脚印。
原文地址:https://www.cnblogs.com/liudaihuablogs/p/10795763.html