码迷,mamicode.com
首页 > 其他好文 > 详细

Qt 导出EXCEL文件

时间:2015-08-27 16:46:07      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:

QString fileName = QFileDialog::getSaveFileName(this, tr("Excel file"), qApp->applicationDirPath(),tr("Excel Files (*.xls)"));
    if (fileName.isEmpty())
       return;

    if (excel(fileName))//调用导出Excel方法
    {
       QMessageBox::about(this, QStringLiteral("提示"),  QStringLiteral("Excel文件 导出完成") );
       QSqlDatabase::removeDatabase("excelexport");
    }



bool RecordDlg::excel(QString fileName )
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC", "excelexport");
    if(!db.isValid())
    {
        return false;
    }

    QString dsn = QString("DRIVER={Microsoft Excel Driver (*.xls)};DSN=‘‘;FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%1\";DBQ=%2").arg(fileName).arg(fileName);

    db.setDatabaseName(dsn);

    if(!db.open())
    {
        QMessageBox::about(this, QStringLiteral("提示"),  QStringLiteral("Excel文件 导出失败") );
        QSqlDatabase::removeDatabase("excelexport");
        return false;
    }

    QSqlQuery query(db);

    QString strSql=QObject::tr("drop table [%1]").arg(QStringLiteral("人脸识别记录"));

    query.exec(strSql);
    
    
    strSql = QObject::tr("CREATE TABLE [%1]([%2] char(100),[%3] char(100),[%4] char(100),[%5] char(100),[%6] char(100),[%7] char(100),[%8] char(100),[%9] char(100))")
        .arg(QStringLiteral("人脸识别记录"))
            .arg(QStringLiteral("序号"))
            .arg(QStringLiteral("时间"))
            .arg(QStringLiteral("位置"))
            .arg(QStringLiteral("工号"))
            .arg(QStringLiteral("姓名"))
            .arg(QStringLiteral("部门编号"))
            .arg(QStringLiteral("状态"))
            .arg(QStringLiteral("图片"));
    qDebug()<<strSql;
    query.prepare(strSql);

    if(!query.exec())
    {

        QMessageBox::about(this, QStringLiteral("提示"),  QStringLiteral("Excel文件 导出失败") );

        db.close();

        QSqlDatabase::removeDatabase("excelexport");

        return false;

    }
    for each(RecordItem var in vecRecord)
    {    
        QString index = QString::number(var.index);
        QString dTime;
        GetRecordTime(var.dTime,&dTime);
        QString szCamPos=var.szCamPos;
        QString szJobNum=var.szJobNum;
        QString szName =var.szName;
        QString szDept=var.szDept;
        QString status;
        switch(var.status) {
            case AlarmType::NORMAL:
                status=QStringLiteral("正常");
                break;
            case AlarmType::HANDLED:
                status=QStringLiteral("已处理");
                break;
            case AlarmType::ABNORMAL:
                status=QStringLiteral("异常");
                break;
            default:
                status=QStringLiteral("未知");
                break;
        }
        QString szImgName=var.szImgName;
        //query.prepare(strSql);
        

        strSql=QObject::tr("insert into %1 values(‘%2‘,‘%3‘,‘%4‘,‘%5‘,‘%6‘,‘%7‘,‘%8‘,‘%9‘)")
            .arg(QStringLiteral("人脸识别记录"))
            .arg(index)
            .arg(dTime)
            .arg(szCamPos)
            .arg(szJobNum)
            .arg(szName)
            .arg(szDept)
            .arg(status)
            .arg(szImgName);
        qDebug()<<strSql;
        if(!query.exec(strSql))
        {
            qDebug()<<query.lastError();
            qDebug()<<query.lastQuery();

            QMessageBox::about(this, QStringLiteral("提示"),  QStringLiteral("Excel文件 导出失败") );

            db.close();

            QSqlDatabase::removeDatabase("excelexport");

            return false;

        }
    }

    return true;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

Qt 导出EXCEL文件

标签:

原文地址:http://blog.csdn.net/q5512049/article/details/48028713

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!