导入导出excel的方式有很多种,我这里使用的表格类型为CSV,这样可以不依赖那些office软件
导入:
QList<QStringList> data;QString file_name = QFileDialog::getOpenFileName(this,tr("Read file"),"",tr("file(*.csv)"));if(!(file_name.isEmpty())){QFile file(file_name);bool ret = file.open(QIODevice::Truncate|QIODevice::ReadOnly);if(!ret)return;QTextStream steam(&file);while(!steam.atEnd()){QString line = steam.readLine();QStringList row = line.split(",");data.append(row);}file.close();for(int i=0;i<7;i++){for(int j=1;j<ui->tableWidget->columnCount();j++){QTableWidgetItem *item=new QTableWidgetItem(data[j][i]);if(j==3){item->setFlags(Qt::ItemIsEnabled);}ui->tableWidget->setItem(i,j,item);}}//qDebug()<<data;}
导出:
QString file_name = QFileDialog::getSaveFileName(this,tr("Save file"),"",tr("file(*.csv)"));if(!(file_name.isEmpty())){QFile file(file_name);bool ret = file.open(QIODevice::Truncate|QIODevice::WriteOnly);if(!ret)return;QTextStream steam(&file);QString conTents;QHeaderView *header = ui->tableWidget->horizontalHeader();if(header){for ( int i = 0; i < header->count(); i++ ){QTableWidgetItem *item = ui->tableWidget->horizontalHeaderItem(i);if (!item){continue;}conTents += item->text() + ",";}conTents += "\n";}for ( int i = 0 ; i < ui->tableWidget->rowCount(); i++ ){for ( int j = 0; j < ui->tableWidget->columnCount(); j++ ){QTableWidgetItem* item = ui->tableWidget->item(i, j);if ( !item ){conTents+=",";continue;}QString str = item->text();str.replace(","," ");conTents += str + ",";}conTents += "\n";}steam << conTents;file.close();QMessageBox::information(this,"通知","文件保存成功");