首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c++ qt API适用于Excel2010,但不适用于ecxel 2013

c++ qt API适用于Excel2010,但不适用于ecxel 2013
EN

Stack Overflow用户
提问于 2015-03-24 15:52:24
回答 1查看 329关注 0票数 1

我有一个问题的接口QT C++到Excel。在QT中,我打开一个Excel工作簿,添加3个选项卡,为这3个选项卡命名,在所有选项卡中填充值,用新名称保存工作簿(另存为)。

我的代码在Excel2010上运行得很好。但是当我运行这个程序(使用Excel2013)时,它崩溃了。有人知道为什么会这样吗?

Excel打开,显示3个选项卡(未命名),然后崩溃。似乎程序员在执行这行代码之前就停止了

代码语言:javascript
复制
QAxObject *sheet1 = sheets->querySubObject( "Item( int )", 1 );

我的代码:

代码语言:javascript
复制
    QAxObject* excel = new QAxObject( "Excel.Application", 0 );
    excel->dynamicCall("SetVisible(bool)",true);
    QAxObject *workbooks = excel->querySubObject( "Workbooks" );
    QAxObject *workbook = workbooks->querySubObject("Add()");
    QAxObject *sheets = workbook->querySubObject( "Worksheets" );

    QAxObject *sheet1 = sheets->querySubObject( "Item( int )", 1 );
    sheet1->dynamicCall("SetName(const QString&)", QVariant("Basics"));
    QAxObject *sheet2 = sheets->querySubObject( "Item( int )", 2 );
    sheet2->dynamicCall("SetName(const QString&)", QVariant("Name2"));
    QAxObject *sheet3 = sheets->querySubObject( "Item( int )", 3 );
    sheet3->dynamicCall("SetName(const QString&)", QVariant("Name3"));

    //... fill excel tabs...

有谁能帮帮我吗?

谢谢

斜体

EN

回答 1

Stack Overflow用户

发布于 2015-03-26 16:02:57

我发现了我的错误:

在Excel2010中,当您打开一个新的工作簿时,将包含3选项卡。如果您打开Excel2013,则只会显示1选项卡

因此,当(在Excel 2013中)我试图为Tab 2或Tab 3设置名称时,我得到了一个错误。

虽然很简单,但我花了两周的时间才弄明白。-(

斜体

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29227386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档