Office启动时 CreateDispatch函数返回FALSE

        当你需要打开或者生成一个doc/xls文件,需要调用Office(WPS)。我在使用过程中一直遇到一个问题,在部分电脑上启动服务时失败,部分电脑可以通过修复注册表来解决,部分电脑修改注册表也解决不了。如果你知道解决方案请不吝赐教。

        如果你也遇到了,希望以下我的经验能给你一点点帮助。

        输出一个.xlsx文件,第一步根据文件默认打开方式判断用户安装的软件版本(office还是wps),第二步根据软件版本传递对应参数调用CreateDispatch。

BOOL bRet = CreateDispatch("Excel.Application", pErr); bRet是FALSE,打开失败。

        第一步判断软件版本,查找“.xlsx”的打开方式。

检查HKEY_CURRENT_USER目录下"\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.xlsx"。

如果没有再检查HKEY_CLASSES_ROOT目录下“\.xlsx”。

取到启动调用的exe名称,Excel.exe(Excel)、ET.exe(WPS)。

        第二步检查启动Application的注册表项。

注册表中搜索“Excel.Application”,下级节点CurVer值为“Excel.Application.12”。

再搜索“Excel.Application.12”,你会看到CLSID “00024500-0000-0000-C000-000000000046”,这个CLSID在多个位置出现,它就是Excel COM注册的唯一ID。CLSID下级节点LocalServer32中会看到Excel.exe绝对路径。系统应该会按这个路径启动excel服务。

        用户WPS启动失败,修改注册表方法。

一、用户HKEY_CURRENT_USER和HKEY_LOCAL_MACHINE缺少注册表项。
解决前先确定  1、  HKEY_CURRENT_USER\Software\Classes\CLSID\{45540001-5750-5300-4B49-4E47534F4655}  有无。  2、[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\KET.Application]  有无。  3、  [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{45540001-5750-5300-4B49-4E47534F4655}]   有无。

确定缺少的注册表项,从正常电脑注册表中导出.reg文件在用户电脑导入。注意CLSID\{4554...4655}\LocalServer32  要修改值,值为用户机器et.exe路径。

CreateDispatch的第一个参数"Excel.Application":

Excel或WPS兼容MSO模式

"ET.Application":V8

"Ket.Application":V9

"Word.Application":Word或WPS兼容MSO模式

"WPS.Application":V8

"Kwps.Application":V9

检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件失败的解决方案-CSDN博客文章浏览阅读7k次,点赞2次,收藏5次。前言:这个错误也是当时在做项目时遇见的。当时需求是上传文件并计算出页数。当时代码都写好了,在进行上传文件上时浏览器就报错了:COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件失败的解决方案。这个错误实际上就是你的电脑上或者服务器上没有配置office组件,下面给大家介绍解决办法:解决办法:①:首先保证你的电脑上或者服务..._检索 com 类工厂中 clsid 为 {00024500-0000-0000-c000-000000000046} 的组件失败https://blog.csdn.net/GreyCastle/article/details/88385617这个方法如果可行,请告诉我。


再说一下我的解决方案,业务方面要读、写excel文件,引入了libxl库,不再依赖用户安装office或者wps。而word文件只有编辑需求,且不再是常用功能,用户反馈越来越少。如果预算充足可以考虑Aspose.word,不需要依赖office和wps。

  • 21
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值