Qt调用Excel在Win7调用失败,setControl Win7 Excel失败

问题描述:

相关代码如下:

	QAxObject *excel = new QAxObject; 
    if(excel->setControl("Excel.Application"))
    {
    	...
    }else{
    	...
    }

看起来没有任何问题,当然在Win10下运行也没有问题;
但是当你把程序打包之后放到Win7去运行,你会发现跑到else中了,也就是调用Excel失败。


解决方案:

首先我以为是Excel位数问题,因为我的程序是64位但是office是32位,于是搞了很久office,最终还是没有解决,于是问题肯定不是在这里; 终于发现:有些平台没有注册COM组件,调用Excel之前需要先显示调用 应用程序在调用COM库函数之前需要先初始化COM组件
	//应用程序必须在调用COM库函数之前初始化COM库
 	HRESULT result = OleInitialize(nullptr); //头文件ole2.h
    if (result != S_OK && result != S_FALSE)
    {
        ...
    }
    
    QAxObject *excel = new QAxObject; 
    if(excel->setControl("Excel.Application"))
    {
    	...
    }else{
    	...
    }

你可能感兴趣的:(Qt,qt,c++)