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

开发环境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 *db = new QSqlTableModel();

//    exportModel->setTable("student");

    db->setTable(tableName);

    db->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;irowCount();i++)
        {

            for(int j=0;jcolumnCount();j++) {

                strList.insert(j,db->data(db->index(i,j)).toString());//把每一行的每一列数据读取到strList中

            }

            strString = strList.join(", ")+"\n";//给两个列数据之前加“,”号,一行数据末尾加回车

            strList.clear();//记录一行数据后清空,再记下一行数据

            csvFile.write(strString.toUtf8());//使用方法:转换为Utf8格式后在windows下的excel打开是乱码,可先用notepad++打开并转码为unicode,再次用excel打开即可。

            qDebug()<

        }

        csvFile.close();

    }
 }

你可能感兴趣的:(2.,QT,1.,C++)