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