Qt實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出到xls的示例代碼
一、前言
導(dǎo)入導(dǎo)出數(shù)據(jù)到csv由于語(yǔ)法簡(jiǎn)單,適用場(chǎng)景有限,于是乎還是必須再造一個(gè)輪子導(dǎo)出數(shù)據(jù)到xls,在經(jīng)歷過(guò)數(shù)十年的項(xiàng)目實(shí)戰(zhàn)經(jīng)驗(yàn)中不斷調(diào)整和優(yōu)化。尤其記得當(dāng)初第一個(gè)版本v0.01大概在2011年左右完成的,當(dāng)時(shí)是公司項(xiàng)目運(yùn)行在嵌入式板子上,需要導(dǎo)出警情記錄,拷貝到電腦上打印,由于嵌入式根本沒(méi)有也不可能去安裝excel等軟件,硬著頭皮去研究了xml格式的xls文件,按照那個(gè)規(guī)則組合成簡(jiǎn)單的導(dǎo)出數(shù)據(jù),這個(gè)思路想法理論上比QtXlsx要早,我也是后面大概在2015年后才發(fā)現(xiàn)有QtXlsx這個(gè)開(kāi)源的輪子,而且思路不謀而合,都是采用xml格式的數(shù)據(jù)。QtXlsx主打各種格式數(shù)據(jù)單元格做成一個(gè)完成的通用的組件等,而我這個(gè)輪子更傾向于具體應(yīng)用場(chǎng)景,直接面對(duì)傻瓜用戶,傳入表名、字段集合幾個(gè)簡(jiǎn)單的信息(現(xiàn)在直接放到了結(jié)構(gòu)體數(shù)據(jù)),就能直接刷刷的導(dǎo)出數(shù)據(jù),甚至簡(jiǎn)單到現(xiàn)在支持直接傳入QTableWidget、QTableView控件就行,不要太簡(jiǎn)單爽歪歪。
結(jié)構(gòu)體支持的參數(shù):
- 文件名稱
- 表名
- 主標(biāo)題
- 副標(biāo)題
- 子標(biāo)題1
- 子標(biāo)題2
- 字段名稱集合
- 字段寬度集合
- 內(nèi)容集合
- 行內(nèi)容分隔符
- 子內(nèi)容分隔符
- 邊框?qū)挾?/li>
- 自動(dòng)填數(shù)據(jù)類型 默認(rèn)開(kāi)啟
- 數(shù)據(jù)單元格樣式 默認(rèn)不開(kāi)啟 不開(kāi)啟可以節(jié)約大概30%的文件體積
- 隨機(jī)顏色
- 隨機(jī)顏色列索引集合
- 校驗(yàn)列
- 校驗(yàn)類型
- 校驗(yàn)值
- 檢驗(yàn)顏色
二、功能特點(diǎn)
組件同時(shí)集成了導(dǎo)出數(shù)據(jù)到csv、xls、pdf和打印數(shù)據(jù)。
所有操作全部提供靜態(tài)方法無(wú)需new,數(shù)據(jù)和屬性等各種參數(shù)設(shè)置采用結(jié)構(gòu)體數(shù)據(jù),極為方便。
同時(shí)支持QTableView、QTableWidget、QStandardItemModel、QSqlTableModel等數(shù)據(jù)源。
提供靜態(tài)方法直接傳入QTableView、QTableWidget控件,自動(dòng)識(shí)別列名、列寬和數(shù)據(jù)內(nèi)容。
每組功能都提供單獨(dú)的完整的示例,注釋詳細(xì),非常適合各階段Qter程序員。
原創(chuàng)導(dǎo)出數(shù)據(jù)機(jī)制,不依賴任何office組件或者操作系統(tǒng)等第三方庫(kù),支持嵌入式linux。
速度超快,9個(gè)字段10萬(wàn)行數(shù)據(jù)只需要2秒鐘完成。
只需要四個(gè)步驟即可開(kāi)始急速導(dǎo)出海量數(shù)據(jù)比如100W條記錄到Excel。
同時(shí)提供直接寫入數(shù)據(jù)接口和多線程寫入數(shù)據(jù)接口,不卡主界面。
可設(shè)置標(biāo)題、副標(biāo)題、表名。
可設(shè)置導(dǎo)出數(shù)據(jù)的字段名、列名、列寬。
可設(shè)置末尾列自動(dòng)拉伸填充,默認(rèn)拉伸更美觀。
可設(shè)置是否啟用校驗(yàn)過(guò)濾數(shù)據(jù),啟用后符合規(guī)則的數(shù)據(jù)特殊顏色顯示。
可指定校驗(yàn)的列、校驗(yàn)規(guī)則、校驗(yàn)值、校驗(yàn)值數(shù)據(jù)類型。
校驗(yàn)規(guī)則支持 精確等于==、大于>、大于等于>=、小于<、小于等于<=、不等于!=、包含contains。
校驗(yàn)值數(shù)據(jù)類型支持 整型int、浮點(diǎn)型float、雙精度型double,默認(rèn)文本字符串類型。
可設(shè)置隨機(jī)背景顏色及需要隨機(jī)背景色的列集合。
支持分組輸出數(shù)據(jù),比如按照設(shè)備分組輸出數(shù)據(jù),方便查看。
可設(shè)置csv分隔符、行內(nèi)容分隔符、子內(nèi)容分隔符。
可設(shè)置邊框?qū)挾?、自?dòng)填數(shù)據(jù)類型,默認(rèn)自動(dòng)數(shù)據(jù)類型開(kāi)啟。
可設(shè)置是否開(kāi)啟數(shù)據(jù)單元格樣式,默認(rèn)不開(kāi)啟,不開(kāi)啟可以節(jié)約大概30%的文件體積。
可設(shè)置橫向排版、紙張邊距等,比如導(dǎo)出到pdf以及打印數(shù)據(jù)。
支持圖文混排導(dǎo)出數(shù)據(jù)到pdf以及打印數(shù)據(jù),自動(dòng)分頁(yè)。
靈活性超高,可自由更改源碼設(shè)置對(duì)齊方式、文字顏色、背景顏色等。
支持任意excel表格軟件,包括但不限于excel2003-2021、wps、openoffice等。
純Qt編寫,支持任意Qt版本+任意編譯器+任意系統(tǒng)。
三、體驗(yàn)地址
體驗(yàn)地址:https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A 提取碼:o05q 文件名:bin_dataout.zip
國(guó)內(nèi)站點(diǎn):https://gitee.com/feiyangqingyun
國(guó)際站點(diǎn):https://github.com/feiyangqingyun
四、效果圖

五、相關(guān)代碼
QStringList frmDataOut2::getContent()
{
QStringList content;
QString sql = QString("select * from MsgInfo limit %1").arg(100);
QSqlQuery query;
if (!query.exec(sql)) {
return content;
}
//循環(huán)遍歷數(shù)據(jù)
while (query.next()) {
QStringList list;
for (int i = 0; i < column; i++) {
list << query.value(i).toString();
}
content << list.join(";");
}
return content;
}
void frmSimple::on_btnXls_clicked()
{
//設(shè)置結(jié)構(gòu)體數(shù)據(jù)
DataContent dataContent;
//填充內(nèi)容
dataContent.content = getContent();
//設(shè)置列名列寬
dataContent.columnNames = columnNames;
dataContent.columnWidths = columnWidths;
//設(shè)置文件名
dataContent.fileName = "d:/0.xls";
//設(shè)置表名
dataContent.sheetName = "測(cè)試信息";
//調(diào)用靜態(tài)函數(shù)保存
DataXls::saveXls(dataContent);
//打開(kāi)剛才導(dǎo)出的文件
QUIHelper::openFile(dataContent.fileName, "導(dǎo)出測(cè)試信息");
}
到此這篇關(guān)于Qt實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出到xls的示例代碼的文章就介紹到這了,更多相關(guān)Qt數(shù)據(jù)導(dǎo)出到xls內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Qt數(shù)據(jù)庫(kù)應(yīng)用之實(shí)現(xiàn)數(shù)據(jù)的導(dǎo)入與導(dǎo)出
- Qt5連接并操作PostgreSQL數(shù)據(jù)庫(kù)的實(shí)現(xiàn)示例
- C/C++ Qt 數(shù)據(jù)庫(kù)與Chart歷史數(shù)據(jù)展示
- C/C++?Qt數(shù)據(jù)庫(kù)SqlRelationalTable關(guān)聯(lián)表詳解
- C/C++?Qt?數(shù)據(jù)庫(kù)與TreeView組件綁定詳解
- C/C++?Qt?數(shù)據(jù)庫(kù)QSql增刪改查組件應(yīng)用教程
- QT連接MYSQL數(shù)據(jù)庫(kù)的詳細(xì)步驟
相關(guān)文章
QT實(shí)現(xiàn)簡(jiǎn)單音樂(lè)播放器
這篇文章主要為大家詳細(xì)介紹了QT實(shí)現(xiàn)簡(jiǎn)單的音樂(lè)播放器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06
C++實(shí)現(xiàn)簡(jiǎn)單的通訊錄管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡(jiǎn)單的通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06
JetBrains?CLion永久激活超詳細(xì)教程(最新激活方法)
JetBrains?Clion?是一款專為?C/C++?開(kāi)發(fā)所設(shè)計(jì)的跨平臺(tái)?IDE,本文適用?JetBrains?CLion?v2019.3/3.1/3.2/3.3?永久激活,附破解補(bǔ)丁和激活碼,可以永久激活?Windows、MAC、Linux?下的?CLion,下面給大家分享JetBrains?CLion永久激活超詳細(xì)教程,感興趣的朋友一起看看吧2023-01-01
C++高性能服務(wù)器框架之協(xié)程調(diào)度模塊
這篇文章主要介紹了C++高性能服務(wù)器框架中的協(xié)程調(diào)度模塊,文中通過(guò)代碼示例介紹的非常詳細(xì),對(duì)我們的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-06-06

