导入导出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,"通知","文件保存成功");