您的位置:首页 > 编程语言 > Qt开发

Qt 导出EXCEL文件

2015-08-27 15:42 651 查看
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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: