int saveEx(QStandardItemModel* model, QTableView *tabelview)
{
//![1]文件
QString fileName = QFileDialog::getSaveFileName(this, tr("保存文件"), "./", "*.csv");//文件对话框
QFile file(fileName);
if(file.open(QIODevice::ReadWrite) == false)//检验文件能否成功打开
{
qDebug() << "open failure";
return -1;
}
//![2]初始化
QTextStream stream(&file);//写入文件的Text流
QString string_temp;//缓存变量
//![3]写头
QHeaderView * header = tabelview->horizontalHeader();//tabelview的表头
if(nullptr != header)//tabelview表头不为空
{
for (int i = 0; i < header->count(); i++)//遍历tabelview的表头所有项
{
QStandardItem* item = model->horizontalHeaderItem(i);//tabelview的第i个表头项
if(nullptr != item)//这里检验item对象是否存在,而不是检验是否为如""的空格子
string_temp += item->text() + ",";//追加到缓存变量,","可分离单元格
else//表头没遍历完但是item对象不存在,说明这一格没有实例,为了不影响后续位置加","分离单元格
string_temp += ",";//追加到缓存变量,","可分离单元格
}
string_temp += "\n";//头写完,追加到换行符到缓存变量
}
//![4]写内容
for(int rows = 0; rows < model->rowCount(); rows++)//遍历tabelview表栏所有行
{
for(int cols = 0; cols < model->columnCount(); cols++)//遍历tabelview表栏所有列
{
QStandardItem* item = model->item(rows, cols);//tabelview的row行column列表栏项
if(nullptr != item)//这里检验item对象是否存在,而不是检验是否为如""的空格子
string_temp += item->text() + ",";//追加到缓存变量,","可分离单元格
else//表格没遍历完但是item对象不存在,说明这一格没有实例,为了不影响后续位置加","分离单元格
string_temp += ",";//追加到缓存变量,","可分离单元格
}
string_temp += "\n";//表栏所有项写完,追加到换行符到缓存变量
}
//![5]写入文件
stream << string_temp;//写到Text流,以写入文件
//![6]结束
file.close();//关闭文件
QMessageBox::information(this, "提示", "文件保存成功");
return 0;
}
QTabelView导出文本到Excel
最新推荐文章于 2023-03-30 14:24:25 发布