在写入qt activex excel读/写代码时,防止未安装excel时应用程序崩溃

我正在使用Qt的ActiveX(QAxObject)为了读取/写入Excel文件。

QAxObject* excel = new QAxObject( "Excel.Application", 0 ); QAxObject* workbooks = excel->querySubObject( "Workbooks" ); QAxObject* workBook = workbooks->querySubObject("Open(const QString&)", path); QAxObject* sheets = workBook->querySubObject( "Worksheets" ); QAxObject* sheet1 = sheets->querySubObject( "Item( int )", 1 ); QAxObject* sheet2 = sheets->querySubObject( "Item( int )", 2 ); //.... 

我们知道这个机制本身就是使用excel,而不是在没有安装excel的计算机上工作。

如果代码在这样的计算机上运行(没有安装Excel),那么程序崩溃。 如何在代码中检测到在PC上没有安装excel?

您检查工作簿是否为空指针。 作为一个经验法则,在使用它之前,您可能需要检查excel是否为空指针。

 QAxObject* excel = new QAxObject( "Excel.Application", 0 ); if ( excel ) { QAxObject* workbooks = excel->querySubObject( "Workbooks" ); if ( workbooks ) { QAxObject* workBook = workbooks->querySubObject("Open(const QString&)", path); QAxObject* sheets = workBook->querySubObject( "Worksheets" ); QAxObject* sheet1 = sheets->querySubObject( "Item( int )", 1 ); QAxObject* sheet2 = sheets->querySubObject( "Item( int )", 2 ); ...