QAxObject excel("Excel.Application");
excel.setProperty("Visible",false);
QAxObject *workbooks = excel.querySubObject("WorkBooks");
workbooks->dynamicCall("Open (const QString&)",QString("c:/dd.xls")); //路径在这里!!!!
QAxObject *workbook = excel.querySubObject("ActiveWorkBook");//获取活动工作簿
QAxObject *worksheets = workbook->querySubObject("WorkSheets");//获取所有的工作表,如图
int intCount = worksheets->property("Count").toInt(); //获取了表的个数
qDebug()<<intCount;
QAxObject *worksheet = workbook->querySubObject("WorkSheets(int)",1);//获取第一个工作表
// QAxObject *range = worksheet->querySubObject("Cells(int,int)",1,1); //获取cell的值
QAxObject *used_range = worksheet->querySubObject("UsedRange"); //获得利用的范围
QAxObject *rows = used_range->querySubObject("Rows");
QAxObject *columns = used_range->querySubObject("Columns");
int row_start = used_range->property("Row").toInt(); //获得开始行
// qDebug()<<row_start; //已经验证准确
int column_start = used_range->property("Column").toInt(); //获得开始列
int row_count = rows->property("Count").toInt();
// qDebug()<<row_count; //已经验证准确
int column_count = columns->property("Count").toInt();
// QString strVal = range->dynamicCall("Value2()").toString();
for(int i = row_start;i<=row_count;i++){
for(int j = column_start;j<=column_count;j++){
QAxObject *cell = worksheet->querySubObject("Cells(int,int)",i,j);
// QString cell_value = cell->property("Value").toString();
qDebug()<<i<<j<<cell->dynamicCall("Value2()").toString(); //只有这句才好使,能够确保能够读取信息,各个信息存于后面那个变量中
}
qDebug()<<endl;
}
excel.dynamicCall("Quit(void)"); //加上这行实现了对文件的释放
// ui->label->setText(strVal);