資源簡介
原文為《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?????{
????????s?=?QString(“[%1]?%2“).arg(fieldList.at(i)->sFieldName).arg(fieldList.at(i)->sFieldType);
????????sSql?+=?s;
????????if(i?????????????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?????{
????????sSql?+=?fieldList.at(i)->sFieldName;
????????if(i?????????????sSql?+=?“??“;
????}
????sSql?+=?“)?VALUES?(“;
????for?(int?i?=?0;?i?????{
????????sSql?+=?QString(“:data%1“).arg(i);
????????if(i?????????????sSql?+=?“??“;
????}
????sSql?+=?“)“;
????qDebug()?<
????int?r?iRet?=?0;
????for(r?=?0?;?r?model()->rowCount()?;?r++)
????{
????????query.prepare(sSql);
????????for?(int?c?=?0;?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個文件信息
評論
共有 條評論