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 *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

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值