2014-03-24 40 views
1

我有一個Qt應用程序使用Excel,我想將工作表添加到文檔。該simpliest解決方案只需要調用(Qt)QAxObject:添加Excel工作表

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

但應該怎麼樣params?正如我所看到的,「之後」是第二參數,但是我根本不需要「之前」。我應該指定哪些參數?

回答

2

您必須指定最後的和新的工作表,否則,如果省略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. 
+0

這爲我工作 - 它應該被接受爲正確答案 – brudert

相關問題