红联Linux门户
Linux帮助

Qt将Sqlite中的表数据导出为CSV格式表格数据

发布时间:2016-09-08 15:30:50来源:linux网站作者:maowendi
开发环境ubuntu16.04+Qt5.6.1、WIN7+Qt5.6.1两个环境都测试过。
 
1.问题
写一个小软件的时候,带有导出excel功能,但是要在linux下运行,最后了解到csv格式,实现起来方便多了,只是用excel打开中文有乱码的现象有一个简单的解决办法。
 
2.代码
写了一个小方法。
调用如下:
ReadDataFromSqlWriteToCSV("student","student.csv");
方法具体实现:
void Qsqlite::ReadDataFromSqlWriteToCSV(const QString &tableName,const QString &csvFileName)//将表导出为csv格式表格
{
QSqlTableModel *exportModel = new QSqlTableModel();
//    exportModel->setTable("student");
exportModel->setTable(tableName);
exportModel->select();
QStringList strList;//记录数据库中的一行报警数据
QString strString;
const QString FILE_PATH(csvFileName);
//    const QString FILE_PATH("student.csv");
QFile csvFile(FILE_PATH);
if (csvFile.open(QIODevice::ReadWrite))
{
for (int i=0;i<exportModel->rowCount();i++)
{
for(int j=0;j<exportModel->columnCount();j++)
{
strList.insert(j,exportModel->data(exportModel->index(i,j)).toString());//把每一行的每一列数据读取到strList中
}
strString = strList.join(", ")+"\n";//给两个列数据之前加“,”号,一行数据末尾加回车
strList.clear();//记录一行数据后清空,再记下一行数据
csvFile.write(strString.toUtf8());//使用方法:转换为Utf8格式后在windows下的excel打开是乱码,可先用notepad++打开并转码为unicode,再次用excel打开即可。
qDebug()<<strString.toUtf8();
}
csvFile.close();
}
}
 
完整(含sqlite数据库的增删改查和tableview显示,及导出)代码地扯:http://download.csdn.net/detail/maowendi/9624978
 
本文永久更新地址:http://www.linuxdiyf.com/linux/23993.html