小编juj*_*lbe的帖子

使用Qt进行多线程Excel处理?

我正在尝试处理Excel工作表以使用Qt(4.6.3)对其中的数据进行一些处理.我试过QAxWidget excel("Excel.Application")这里使用的.

我首先尝试在一个简单的方法中使用它,一切正常但GUI冻结了一段时间,所以我尝试在不同的方式实现它QThread.

正如一些人所说,不允许QWidget在主线程之外的其他线程中使用继承的类.我也尝试过这种方式,但无论如何都有运行时错误.

这是我的代码片段:

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)");
}
Run Code Online (Sandbox Code Playgroud)

我做错了什么?有没有更好的方法来完成工作?比ActiveX更好的想法?

谢谢.

编辑: 正如Raiv所说,我换成QAxWidgetQAxObject

只需调用线程的run():

// ...
CoInitialize(0);
QAxObject excel("Excel.Application");
// ...
Run Code Online (Sandbox Code Playgroud)

它工作正常.

qt multithreading activex

3
推荐指数
1
解决办法
1142
查看次数

标签 统计

activex ×1

multithreading ×1

qt ×1