Qt在线程中操作excel问题解决
程序员文章站
2024-02-24 13:43:58
...
问题描述
在qt界面主线程中使用QAxObject类对excel进行操作时,功能均正常,当将代码移植到子线程中使用时,出现错误。错误提示如下:
QAxBase::setControl: requested control Excel.Application could not be instantiated
QAxBase::dynamicCallHelper: Object is not initialized, or initialization failed
分析
查阅资料后发现,在调用COM库中的函数之前,需要先将COM库初始化。初始化COM库我们需要使用windows提供的API函数CoInitializeEx,函数原型如下:
HRESULT CoInitializeEx(
void * pvReserved,
DWORD dwCoInit
);
解决
在项目中引入#include “Windows.h”
在调用COM库函数之前,增加代码:
CoInitializeEx(NULL, COINIT_MULTITHREADED);
COINIT_MULTITHREADED为const 枚举,表示组件进入进程唯一的MTA套间。
返回值:
S_OK :COM库初始化成功。
S_FALSE :当前线程上,COM库已经被初始化。
RPC_E_CHANGED_MODE :COM库已经被初始化且传入参数设置的并发模式和本次不同
下一篇: 详解Android中Dialog的使用
推荐阅读
-
Qt在线程中操作excel问题解决
-
在PHP中操作Excel实例代码
-
Python实现Office自动化办公(实现Python对word基本操作、对excel基本操作、在word中插入表格、word中插入网站爬虫取图)
-
WPF中ObservableCollection在非界面线程操作方法
-
在PHP中操作Excel实例代码_PHP
-
在excel中如何排序 php 数组操作增加,删除,查询,排序等函数说明第1/2页
-
在PHP中操作Excel实例代码
-
在PHP中操作Excel实例代码
-
在PHP中操作Excel实例代码_PHP教程
-
在excel中如何排序 php 数组操作增加,删除,查询,排序等函数说明第1/2页