ts翻译文件导出为excel。qt5.5编译。包含代码及可执行程序。
代码片段和文件信息
#include “exportexcelobject.h“
#include
#include
#include
int ExportExcelobject::export2Excel()
{
if(fieldList.size() <= 0)
{
qDebug() << “ExportExcelobject::export2Excel failed: No fields defined.“;
return -1;
}
QSqlDatabase db = QSqlDatabase::addDatabase(“QODBC“ “excelexport“);
if(!db.isValid())
{
qDebug() << “ExportExcelobject::export2Excel failed: QODBC not supported.“;
return -2;
}
// set the dsn string
QString dsn = QString(“DRIVER={Microsoft Excel Driver (*.xls)};DSN=‘‘;FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=“%1“;DBQ=%2“).
arg(excelFilePath).arg(excelFilePath);
db.setDatabaseName(dsn);
if(!db.open())
{
qDebug() << “ExportExcelobject::export2Excel failed: Create Excel file failed by DRIVER={Microsoft Excel Driver (*.xls)}.“;
//QSqlDatabase::removeDatabase(“excelexport“);
return -3;
}
QSqlQuery query(db);
//drop the table if it‘s already exists
QString s sSql = QString(“DROP TABLE [%1] (“).arg(sheetName);
query.exec(sSql);
//create the table (sheet in Excel file)
sSql = QString(“CREATE TABLE [%1] (“).arg(sheetName);
for (int i = 0; i < fieldList.size(); i++)
{
s = QString(“[%1] %2“).arg(fieldList.at(i)->sFieldName).arg(fieldList.at(i)->sFieldType);
sSql += s;
if(i < fieldList.size() - 1)
sSql += “ “;
}
sSql += “)“;
query.prepare(sSql);
if(!query.exec())
{
qDebug() << “ExportExcelobject::export2Excel failed: Create Excel sheet failed.“;
//db.close();
//QSqlDatabase::removeDatabase(“excelexport“);
return -4;
}
//add all rows
sSql = QString(“INSERT INTO [%1] (“).arg(sheetName);
for (int i = 0; i < fieldList.size(); i++)
{
sSql += fieldList.at(i)->sFieldName;
if(i < fieldList.size() - 1)
sSql += “ “;
}
sSql += “) VALUES (“;
for (int i = 0; i < fieldList.size(); i++)
{
sSql += QString(“:data%1“).arg(i);
if(i < fieldList.size() - 1)
sSql += “ “;
}
sSql += “)“;
qDebug() << sSql;
int r iRet = 0;
for(r = 0 ; r < tableView->model()->rowCount() ; r++)
{
query.prepare(sSql);
for (int c = 0; c < fieldList.size(); c++)
{
query.bindValue(QString(“:data%1“).arg(c) tableView->model()->data(tableView->model()->index(r fieldList.at(c)->iCol)));
}
if(query.exec())
iRet++;
if(r % 10 == 0)
emit exportedRowCount(r);
}
emit exportedRowCount(r);
return iRet;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)