其实就是几行.
创建行,从第一行开始创建
ui->tableWidget->insertRow(i); //i代表行数,从0开始
ui->tableWidget->setItem(i,j,new QTableWidgetItem(QString::number(D[i].x))); 第I行第J列,最后传的数值只能为QString一个实例,从excel中读取数据并放进QTableWidget显示struct data{int x;int y;QString month;QString day;float FFMC;float DMC;float DC;float ISI;float temp;int RH;float wind;float rain;float area;}D[1000];
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){ui->setupUi(this);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();if(j==1){D[i].x = cell->dynamicCall("Value2()").toInt();}
if(j==2){D[i].y = cell->dynamicCall("Value2()").toInt();}
if(j==3){D[i].month = cell->dynamicCall("Value2()").toString();}
if(j==4){D[i].day = cell->dynamicCall("Value2()").toString();}
if(j==5){D[i].FFMC = cell->dynamicCall("Value2()").toFloat();}
if(j==6){D[i].DMC = cell->dynamicCall("Value2()").toFloat();}
if(j==7){D[i].DC = cell->dynamicCall("Value2()").toFloat();}
if(j==8){D[i].ISI = cell->dynamicCall("Value2()").toFloat();}
if(j==9){D[i].temp = cell->dynamicCall("Value2()").toFloat();}
if(j==10){D[i].RH = cell->dynamicCall("Value2()").toInt();}
if(j==11){D[i].wind = cell->dynamicCall("Value2()").toFloat();}
if(j==12){D[i].rain = cell->dynamicCall("Value2()").toFloat();}
if(j==13){D[i].area = cell->dynamicCall("Value2()").toFloat();}
}
}
//QTableWidget控件的相关设置
ui->tableWidget->setColumnCount(13); //设置9行QStringList m_header;m_header<<QString("1")<<QString("2")<<QString("3")<<QString("4")<<QString("5")<<QString("6")<<QString("7")<<QString("8")<<QString("9")<<QString("10")<<QString("11")<<QString("12")<<QString("13");ui->tableWidget->setHorizontalHeaderLabels(m_header);QTextCodec::setCodecForLocale(QTextCodec::codecForName("system"));ui->tableWidget->horizontalHeader()->setStretchLastSection(true); ;//显示某块for(int i = row_start+1;i<=row_count;i++){ui->tableWidget->insertRow(i-2);ui->tableWidget->setItem(i-2,0,new QTableWidgetItem(QString::number(D[i].x)));ui->tableWidget->setItem(i-2,1,new QTableWidgetItem(QString::number(D[i].y)));ui->tableWidget->setItem(i-2,2,new QTableWidgetItem(D[i].month));ui->tableWidget->setItem(i-2,3,new QTableWidgetItem(D[i].day));ui->tableWidget->setItem(i-2,4,new QTableWidgetItem(QString::number(D[i].FFMC)));ui->tableWidget->setItem(i-2,5,new QTableWidgetItem(QString::number(D[i].DMC)));ui->tableWidget->setItem(i-2,6,new QTableWidgetItem(QString::number(D[i].DC)));ui->tableWidget->setItem(i-2,7,new QTableWidgetItem(QString::number(D[i].ISI)));ui->tableWidget->setItem(i-2,8,new QTableWidgetItem(QString::number(D[i].temp)));ui->tableWidget->setItem(i-2,9,new QTableWidgetItem(QString::number(D[i].RH)));ui->tableWidget->setItem(i-2,10,new QTableWidgetItem(QString::number(D[i].wind)));ui->tableWidget->setItem(i-2,11,new QTableWidgetItem(QString::number(D[i].rain)));ui->tableWidget->setItem(i-2,12,new QTableWidgetItem(QString::number(D[i].area)));// qDebug()<<D[i].x<<D[i].y<<D[i].month<<D[i].day<<D[i].FFMC<<D[i].DMC<<D[i].DC<<D[i].ISI<<D[i].temp<<D[i].RH<<D[i].wind<<D[i].rain<<D[i].area;// qDebug()<<endl;}
}