3
我正在嘗試處理一個Excel工作表,對Qt中的數據進行一些處理(4.6.3)。 我試過使用QAxWidget excel("Excel.Application")
作爲使用here。使用Qt進行多線程Excel處理?
我試着先用一個簡單的方法,一切正常,但GUI凍結了一段時間,所以我試圖在不同的QThread
中實現它。
正如有人說,不允許在主線程之外的其他線程中使用QWidget
的繼承類。 我也試過這個way,但是反正有一個運行時錯誤。
這裏是我的代碼片段:
void MainDialog::extractData()
{
QAxWidget excel("Excel.Application");
excel.setProperty("Visible", false);
QAxObject * workbooks = excel.querySubObject("WorkBooks");
workbooks->dynamicCall("Open (const QString&)", ui->lineEditAdress->text());
QAxObject * workbook = excel.querySubObject("ActiveWorkBook");
QAxObject * worksheet = workbook->querySubObject("Worksheets(int)", 1);
// ... some work here...
workbook->dynamicCall("Close (Boolean)", false);
excel.dynamicCall("Quit (void)");
}
我做錯了嗎?有沒有更好的方式來完成工作?比ActiveX更好的主意?
謝謝。
編輯: 作爲Raiv說,我換成QAxWidget
通過QAxObject
只是在線程的run()的調用:
// ...
CoInitialize(0);
QAxObject excel("Excel.Application");
// ...
,它工作正常。
感謝您的快速反應,它實際上工作。 – jujulebulbe