2

我正在使用 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?

4

1 回答 1

5

您检查工作簿是否为 NULL 指针。根据经验,您可能需要在使用之前检查 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 );

           ...
于 2016-12-19T19:57:28.737 回答