私はQt(4.6.3)を使ってExcelシートを処理してその中のデータを処理しようとしています。 hereとしてQAxWidget excel("Excel.Application")
を使用しようとしました。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よりも良いアイデアですか?
ありがとうございました。
編集:
// ...
CoInitialize(0);
QAxObject excel("Excel.Application");
// ...
、それが正常に動作します: Raivは、私はただ、スレッドの実行()で呼び出すQAxObject
でQAxWidget
を置き換え、言ったように。
すぐにお返事いただきありがとうございます。 – jujulebulbe