2014-11-24 32 views
0

我已經打開Excel工作表中的Qt和試圖讓行和列填寫的號碼(如果全部裝滿連續),此代碼號:Excel中使用Qt:找到最後充滿一行

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

} 

的問題是行數coulumnCount顯示了很大的數字,但我的表格已填充4x6。

我已經看到了這些問題: Get Last non Empty Cell of Excel Column Programatically

Finding the last filled row in Excel sheet in c#

但兩者都爲C# 但我不知道如何在Qt的

回答

3

爲此,我已經解決了這個問題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)); 
相關問題