Qt5中在线程中使用QAxObject无效

shn521 2016-07-18 06:42:02
在线程用用QAxObject操作excel,
已经使用了CoInitializeEx(NULL, COINIT_MULTITHREADED);在Qt4.8.5的版本就是可以的,但Qt5又不行了
excelWorkBooks = excelApplication->querySubObject("Workbooks");返回值为NULL,请问该如何解决
...全文
437 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
FlyToTMoon 2016-07-19
  • 打赏
  • 举报
回复
QT5下面实际在用的代码。。没出现过问题
QAxObject* pExcelApp = new QAxObject("Excel.Application");  // 创建EXCEL对象,启动Excel.exe进程
    if (NULL == pExcelApp)
    {
        OnShowTempMsg("Excel Program Is Not Installed", 5000);
        return;
    }
    pExcelApp->setProperty("DisplayAlerts", false);             // 保存时不提示覆盖
    //pExcelApp->setProperty("Visible", true);                  // 操作时可以看见EXCEL窗口,调试用

    // 打开测试报告模板
    QString strFilePath = QCoreApplication::applicationDirPath() + "/Report/TestReportTemplate.xlsx";
    QAxObject* pWorkBooks = pExcelApp->querySubObject("WorkBooks");
    pWorkBooks->dynamicCall("Open(const QString&)", strFilePath);
    QAxObject* pWorkBook = pExcelApp->querySubObject("ActiveWorkBook");
    if (NULL == pWorkBook)
    {
        OnShowTempMsg("Can Not Open TestReportTemplate.xlsx File, Path Is " + strFilePath, 5000);
        return;
    }

16,201

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧