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

标签 excel qt activex qaxobject

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

最佳答案

检查工作簿是否为 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 );

           ...

关于excel - 在编写qt activex excel读/写代码时防止未安装excel时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41223660/

相关文章:

visual-studio-2008 - CMake 构建 ActiveX OCX?

python - 如何在pyQt5中接收ActiveX事件?

c# - 如何在低版本(.Net)上使用Excel Interop?

excel - 文本过滤器对两个字符串,但排除一些可能性

c++ - 如何使用多线程制作一个简单的 Qt 控制台应用程序?

javascript - 在 IE7 中控制打印尺寸

excel - 循环工作表,排除一些并查找单元格值

excel - 因此,当使用动态命名范围时,显然 INDIRECT 函数不适用于 Excel 中的数据验证

c++ - 计算目录中的文件

linux - 为 qt 程序提供 root 身份验证