若是電腦上沒有office,須要判斷,不然,會報錯this
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 時發生訪問衝突。
解決代碼以下:spa
//根據文件名獲取文件數據 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; }