QT实现appendSheet
一般地,熟悉VB、VC的同学都知道,要将新增的excel表单添加到表单的末尾,是很简单的事情,直接调用Add函数,传入对应的函数形参,就能实现将新增表单插入到末尾,但是通过QT的QAxObject实现appendSheet()却不是那么容易的事情,因为上述的Add函数不奏效,经过多次试验尝试,发现通过Add函数新增的表单只能插入到某一表单的前面,而不能添加到表单的尾部,那怎么办呢?我这里采用了一种Add + Move的方法,实现appendSheet的功能,也就是通过Add新增一个sheet,然后通过Move函数,将生成的表单移到当前最后一个表单的末尾,从而达到实现appendSheet的目的,下面是具体的实现方法:
void appendSheet(const QString &sheetName)
{
int cnt = pWorkSheets->property("Count").toInt();
QAxObject *pLastWorkSheet = pWorkSheets->querySubObject("Item(int)", cnt);
pWorkSheets->querySubObject("Add(QVariant)", pLastWorkSheet->asVariant());
pNewSheet = pWorkSheets->querySubObject("Item(int)", cnt);
pLastSheet->dynamicCall("Move(QVariant)", pNewSheet->asVariant());
pNewSheet->setProperty("Name", strsheetName);
}