资源简介
原文为《Qt中将QTableView中的数据导出为Excel文件>>,地址http://blog.csdn.net/superjoel/article/details/5321404。经过修改,支持QT的编译和运行。
代码片段和文件信息
#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;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 726 2018-08-25 17:05 TableView\.qmake.stash
文件 505638 2018-08-25 17:11 TableView\debug\exportexcelob
文件 503272 2018-08-25 17:12 TableView\debug\main.o
文件 670628 2018-08-25 17:10 TableView\debug\mainwindow.o
文件 4381 2018-08-25 17:11 TableView\debug\moc_exportexcelob
文件 369684 2018-08-25 17:11 TableView\debug\moc_exportexcelob
文件 4176 2018-08-25 17:11 TableView\debug\moc_mainwindow.cpp
文件 329107 2018-08-25 17:11 TableView\debug\moc_mainwindow.o
文件 2822 2018-08-25 17:11 TableView\debug\moc_mytestmodel.cpp
文件 387833 2018-08-25 17:11 TableView\debug\moc_mytestmodel.o
文件 9895 2018-08-25 17:11 TableView\debug\moc_predefs.h
文件 385053 2018-08-25 17:11 TableView\debug\mytestmodel.o
文件 2913033 2018-08-25 17:12 TableView\debug\TestTableView.exe
文件 2798 2010-02-23 12:03 TableView\exportexcelob
文件 2971 2010-02-23 12:01 TableView\exportexcelob
文件 183 2018-08-25 17:12 TableView\main.cpp
文件 2093 2010-02-23 15:31 TableView\mainwindow.cpp
文件 572 2010-02-23 13:32 TableView\mainwindow.h
文件 2262 2010-02-23 13:32 TableView\mainwindow.ui
文件 29438 2018-08-25 17:10 TableView\Makefile
文件 74516 2018-08-25 17:10 TableView\Makefile.Debug
文件 74664 2018-08-25 17:10 TableView\Makefile.Release
文件 17892 2010-01-12 15:53 TableView\mytableview.cpp
文件 5400 2010-01-11 17:01 TableView\mytableview.h
文件 1147 2018-08-25 17:10 TableView\mytestmodel.cpp
文件 481 2010-01-09 17:57 TableView\mytestmodel.h
文件 478 2018-08-25 17:10 TableView\TestTableView.pro
文件 24163 2018-08-25 17:09 TableView\TestTableView.pro.user
文件 4408 2018-08-25 17:10 TableView\ui_mainwindow.h
目录 0 2018-08-25 17:12 TableView\debug
............此处省略5个文件信息
相关资源
- QT学习之TCP聊天
- qt5音乐播放器自定义解码
- qt5音乐播放器,实现歌词同步,本地
- Qt5类继承关系图(增加了书签放大效
- QT影音播放器源码
- 程序打包软件
-
QML的MediaPla
yer支持XP播放视频的dse - 模仿QQ登录窗口Qt
- Qt打砖块游戏
- Qt 串口助手增强版带示波器曲线源代
- QT5获取USB设备信息+PID+VID+序列号+热插
- Qt QML高仿微信
-
Qt以tableWidget/tableView读取xm
l文件,并 - QT状态栏修改
- 使用QT官方库的mqtt客户端
- QT5.12所需ssleay32.dll,libeay32.dll 1.0.2q
-
QT st
yleSheet - 传智播客2016版QT教程
- linux+QT下基于RTP协议的实时视频传输客
- QT 智能家居
- qt写的绘制串口接收到数据的实时曲线
- QT5编译QFtp的具体方法和所用到的资源
- Enigma Virtual Box V7.30官方中文版
- Qt天气助手绘图、获取城市列表
- Qt Designer手册
- qtsnvivo_29157.rar
- 简单的文本编译器
- QT版聊天软件
- 智能家居界面
- Qt编写的Plotter绘制曲线源代码
评论
共有 条评论