1.直接在主线程中使用,不要使用多线程
2.多线程中使用:
1.使用局部变量,程序会自动释放
//多线程必须初始化
CoInitializeEx(NULL, COINIT_MULTITHREADED);
QAxObject excel("Excel.Application");//使用局部变量,程序执行完会自动释放资源。任务管理器中将不会存在Excel进程
QAxObject *work_books = excel.querySubObject("WorkBooks");
work_books->dynamicCall("Add");
QAxObject *work_book = excel.querySubObject("ActiveWorkBook");
QAxObject *work_sheet = work_book->querySubObject("Sheets(int)", 1);
...
work_book->dynamicCall("SaveAs(const QString&)", QDir::toNativeSeparators(m_sDetFileName));
excel.dynamicCall("Quit(void)", false); //退出
2.使用成员变量,可能会资源释放不干净,造成任务管理器中Excel进程残留
解决方法可以参考