Excel与Qt:find最后一个填充行数

我已经在Qt中打开excel工作表,并试图获得行数和列填充(如果所有填充连续)与此代码:

QString file = QFileDialog::getOpenFileName(this,"Open file"); QAxWidget excel("Excel.Application"); excel.setProperty("Visible", true); QAxObject * workbooks = excel.querySubObject("WorkBooks"); QAxObject* workbook = workbooks->querySubObject( "Open(const QString&)", file ); sheets = workbook->querySubObject( "Worksheets" ); QAxObject* sheet = sheets->querySubObject( "Item( int )", i ); QAxObject* rows = sheet->querySubObject( "Rows" ); int rowCount = rows->dynamicCall( "Count()" ).toInt(); QAxObject* columns = sheet->querySubObject( "Columns" ); int columnCount = columns->property("Count").toInt(); ui->label->setText(QString::number(rowCount)+" ," +QString::number(columnCount)); } 

问题是rowcount和coulumnCount显示一个很大的数字,但我的工作表已填充4×6。

我已经看到了这些问题: 以编程方式获取Excel列的最后一个非空单元格

在c#中的Excel工作表中查找最后一个填充的行

但都是C#但我不知道如何做到这一点在Qt中

我已经用Excel.Range和UsedRange解决了这个问题(在这种情况下,所有的单元格都不应该被连续填充,而在空单元格之间进行计数)

 QAxObject* sheet = sheets->querySubObject( "Item( int )", i ); QAxObject * range = sheet->querySubObject("UsedRange"); QAxObject * rows = range->querySubObject( "Rows" ); int rowCount = rows->dynamicCall( "Count()" ).toInt(); QAxObject* columns = range->querySubObject( "Columns" ); int columnCount = columns->property("Count").toInt(); ui->label->setText(QString::number(rowCount)+" ," +QString::number(columnCount));