首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(Qt) QAxObject:添加Excel工作表

(Qt) QAxObject:添加Excel工作表
EN

Stack Overflow用户
提问于 2014-03-24 20:20:44
回答 1查看 2.2K关注 0票数 1

我有一个使用Excel的Qt应用程序,我想向文档中添加一个工作表。最简单的解决方案就是调用

代码语言:javascript
复制
QAxObject *sheets = workbook->querySubObject("Worksheets");
sheets->dynamicCall("Add()");

但是通过这种方式,您将在最后一个已有的工作表之前添加一个工作表,但我想将它放在最后一个工作表之后。生成的文档会告诉您:

代码语言:javascript
复制
IDispatch* Add (QVariant Before, QVariant After, QVariant Count, QVariant Type) [slot]

Connect a signal to this slot:

    QObject::connect(sender, SIGNAL(someSignal(QVariant, QVariant, QVariant, QVariant)), object, SLOT(Add(QVariant, QVariant, QVariant, QVariant)));
Or call the function directly:

    QVariantList params = ...
    QAxObject * result = object->querySubObject("Add(QVariant, QVariant, QVariant, QVariant)", params);

但是params应该是什么样的呢?正如我所看到的,"after“是第二个参数,但是我根本不需要”之前“。我应该指定什么作为params?

EN

回答 1

Stack Overflow用户

发布于 2014-08-04 22:59:48

必须指定最后一个工作表和新工作表,否则如果同时省略了之前和之后,则默认情况下,新工作表将插入到活动工作表之前。

您可以这样做,以便在最后一个工作表之后插入:

代码语言:javascript
复制
// set of sheets
QAxObject* sheets = workbook->querySubObject( "Worksheets" );

// Sheets number
int intCount = sheets->property("Count").toInt();

// Capture last sheet and add new sheet
QAxObject* lastSheet = sheets->querySubObject("Item(int)", intCount);
sheets->dynamicCall("Add(QVariant)", lastSheet->asVariant());

// Capture the new sheet and move to after last sheet
QAxObject* newSheet = sheets->querySubObject("Item(int)", intCount);
lastSheet->dynamicCall("Move(QVariant)", newSheet->asVariant());

Regards,

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

https://stackoverflow.com/questions/22609236

复制
相关文章

相似问题

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