1. 程式人生 > >Qt將Sqlite中的表資料匯出為CSV格式表格資料

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