之前自己写过一篇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官网下载【我没试过,但是看官网的大小和我重装的大小差不多】,或者就是使用我那种方式在软件管家里选择重装。