qt操作excel報錯解決


如果電腦上沒有office,需要判斷,否則,會報錯

onecore\com\combase\catalog\catalog.cxx(2376)\combase.dll!00007FFF1DF823CB: (caller: 00007FFF1DED3A10) ReturnHr(7) tid(3a5c) 800401F3 無效的類字符串
線程 0x3b74 已退出,返回值為 0 (0x0)。
onecore\com\combase\dcomrem\resolver.cxx(2279)\combase.dll!00007FFF1DE596F0: (caller: 00007FFF1DECE463) ReturnHr(8) tid(3a5c) 80040154 沒有注冊類
onecore\com\combase\dcomrem\resolver.cxx(2483)\combase.dll!00007FFF1DECE48A: (caller: 00007FFF1DE58779) ReturnHr(9) tid(3a5c) 80040154 沒有注冊類
CoCreateInstance failure (沒有注冊類)
QAxBase::setControl: requested control Excel.Application could not be instantiated
QAxBase::dynamicCallHelper: Object is not initialized, or initialization failed
QAxBase::dynamicCallHelper: Object is not initialized, or initialization failed
0x00007FF621D0DD8E 處(位於 SpinalV1i.exe 中)引發的異常: 0xC0000005: 讀取位置 0x0000000000000018 時發生訪問沖突。

解決代碼如下:

//根據文件名獲取文件數據
QAxObject* getExcelDataByFilename(QString fileNameParam)
{
    QAxObject *worksheets;
    QAxObject *workbook;
    try 
    {
        QAxObject *excel = new QAxObject(this);    //連接Excel控件
        if (excel->setControl("Excel.Application"))
        {

        }
        else
        {
            excel->setControl("ket.Application");  //連接Excel控件
        }
        excel->setProperty("Visible", false);  //不顯示窗體
        QAxObject *workbooks = excel->querySubObject("WorkBooks");
        workbook = workbooks->querySubObject("Open(const QString&)", fileNameParam);
    }
    catch (...) {
        qCritical() << "打開文件失敗...";
        
    }

    return workbook;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM