2017-09-16 35 views
0

嘗試使用ActiveQt可和代碼打開* .xls文件時:ActiveQt可無法打開的* .xls如果一個Excel.Application是不可見的

QAxObject *excel = new QAxObject("Excel.Application", this); 
QAxObject *workbooks = excel->querySubObject("Workbooks"); 
QAxObject *workbook = workbooks->querySubObject("Open(const QString&)", "c:\\somefile.xls"); 
QAxObject *worksheets = workbook->querySubObject("Worksheets"); 
QAxObject *worksheet = worksheets->querySubObject("Item(int)", 1); 

我得到一個錯誤:

QAxBase: Error calling IDispatch member Open: Unknown error

The program has unexpectedly finished.

我搜查了互聯網,發現如果excel的財產Visible設置爲true,一切都會順利運作,沒有錯誤。 有趣的是,我必須在打開文件之前設置此屬性,否則程序會暗戀。但是,如果在打開文件後將其設置爲true,則Excel應用程序將正確顯示(向我顯示文件中的數據),但程序會粉碎。

我正在尋找一個真正的解決方案,或問題的原因。我不希望excel在任何時候對用戶可見。

所以使其可見,然後隱形不是我

附言:一個令人滿意的解決方案在我的筆記本電腦上使用相同的代碼在整個月內100%正確工作,然後它開始粉碎。在我的工作場所,他們在電腦上遇到了同樣的問題,所以我的同事曾經在我的電腦上運行他的應用程序來檢查它們是否工作。這是一個不好的習慣,因爲我們不知道情況會是怎樣的

我使用Qt 5.8.0用戶,微軟Office 2016和微軟辦公2012

+0

尚未解決此問題!仍在苦苦掙扎/ – Nour

回答

0

我找到了解決辦法很長一段時間以前,抱歉沒有更新。

整個問題是因爲Foxit Pro插件。我在MS Office中停用了它,一切正常。

P.S.問題可能出現在任何MS Office應用程序中,請務必使用COM API將其關閉。