(Qt)QAxObject:添加Excel工作表

我有一个使用Excel的Qt应用程序,我想将一个工作表添加到文档中。 最简单的解决scheme就是打电话

QAxObject *sheets = workbook->querySubObject("Worksheets"); sheets->dynamicCall("Add()"); 

但是这样你可以在最后一张现有的工作表之前添加一张工作表,但是我想把它放在最后一张工作表之后。 生成的文档会说你:

 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); 

但是应该怎么样? 正如我所看到的,“之后”是第二个参数,但是我根本不需要“之前”。 我应该指定哪些参数?

您必须指定最后的和新的工作表,否则如果BEFORE和AFTER都被忽略,则默认情况下新工作表将被插入到活动工作表之前。

你可以做这样的事情来插入最后一张表:

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