c ++ qt API与Excel 2010一起使用,但不与ecxel 2013一起使用

API QT C ++到Excel有问题。 从QT我打开一个Excel工作簿,添加3个选项卡,命名这些3个选项卡,填写值到所有选项卡,保存工作簿与一个新名称(另存为)。

我的代码与Excel 2010完美协作。但是,当我运行程序(使用Excel 2013)时,它崩溃了。 有人知道为什么吗?

Excel打开,显示3个选项卡(未命名),然后崩溃。 看来Programm在执行这一行之前停止

QAxObject *sheet1 = sheets->querySubObject( "Item( int )", 1 ); 

我的代码:

  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... 

有人可以帮我吗?

谢谢

itelly

我发现我的错误:

在Excel 2010中,当您打开一个新的工作簿时,会包含3个选项卡 。 如果您打开Excel 2013,那么只有1个选项卡

所以,当(在Excel 2013中)我试图设置一个名称到表2或3我得到一个错误。

就这么简单,花了我2​​周的时间才搞清楚了。 ;-(

itelly