您好,登錄后才能下訂單哦!
這篇文章的內(nèi)容主要圍繞Qt數(shù)據(jù)庫應(yīng)用中如何將數(shù)據(jù)打印到pdf進(jìn)行講述,文章內(nèi)容清晰易懂,條理清晰,非常適合新手學(xué)習(xí),值得大家去閱讀。感興趣的朋友可以跟隨小編一起閱讀吧。希望大家通過這篇文章有所收獲!
自從數(shù)據(jù)可以導(dǎo)出到xls,又有客戶提出了不同的需求,比如既然可以將數(shù)據(jù)導(dǎo)出到xls,那是否可以導(dǎo)出到pdf文件呢?因?yàn)閤ls打開以后用戶可以修改數(shù)據(jù)造假之類的,而pdf默認(rèn)是不可編輯的,除非借助專業(yè)的工具,所以如果想要限定用戶導(dǎo)出數(shù)據(jù)不能被更改,那導(dǎo)出pdf是最佳選擇。寫程序往往都是這樣,一步步慢慢增加,隨著用戶需求的增加,程序量也越來越多,輪子組件也越來越多。往往客戶提需求的時(shí)候,一定要認(rèn)真聆聽,尤其是一線用戶,實(shí)際使用的用戶,盡管有些不合理的需求,但是能滿足就盡量滿足,畢竟客戶就是上帝。
在Qt中要導(dǎo)出到pdf必須要用到qprinter類,相當(dāng)于這些數(shù)據(jù)是打印到pdf的,所以確切點(diǎn)是叫打印到pdf文件,而不是導(dǎo)出數(shù)據(jù)到pdf,格式這塊由于采用的是打印,所以需要用html嵌套table表格的形式來打印,支持的格式就有限了,一般可以設(shè)置字體大小、顏色、邊框、對齊等,盡管是html,但是也是支持有限的html格式,這點(diǎn)要特別注意?,F(xiàn)在的qt版本貌似單獨(dú)將pdf提煉出來成了獨(dú)立的模塊,功能更強(qiáng)大。
結(jié)構(gòu)體支持的參數(shù):
文件名稱
表名
主標(biāo)題
副標(biāo)題
字段名稱集合
字段寬度集合
內(nèi)容集合
行內(nèi)容分隔符
子內(nèi)容分隔符
邊框?qū)挾?/p>
校驗(yàn)列
校驗(yàn)類型
校驗(yàn)值
檢驗(yàn)顏色
最后列拉伸填充
橫向排版
紙張邊距
組件同時(shí)集成了導(dǎo)出數(shù)據(jù)到csv、xls、pdf和打印數(shù)據(jù)。
所有操作全部提供靜態(tài)方法無需new,數(shù)據(jù)和屬性等各種參數(shù)設(shè)置采用結(jié)構(gòu)體數(shù)據(jù),極為方便。
同時(shí)支持QTableView、QTableWidget、QStandardItemModel、QSqlTableModel等數(shù)據(jù)源。
提供靜態(tài)方法直接傳入QTableView、QTableWidget控件,自動(dòng)識別列名、列寬和數(shù)據(jù)內(nèi)容。
每組功能都提供單獨(dú)的完整的示例,注釋詳細(xì),非常適合各階段Qter程序員。
原創(chuàng)導(dǎo)出數(shù)據(jù)機(jī)制,不依賴任何office組件或者操作系統(tǒng)等第三方庫,支持嵌入式linux。
速度超快,9個(gè)字段10萬行數(shù)據(jù)只需要2秒鐘完成。
只需要四個(gè)步驟即可開始急速導(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)過濾數(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ù)類型開啟。
可設(shè)置是否開啟數(shù)據(jù)單元格樣式,默認(rèn)不開啟,不開啟可以節(jié)約大概30%的文件體積。
可設(shè)置橫向排版、紙張邊距等,比如導(dǎo)出到pdf以及打印數(shù)據(jù)。
支持圖文混排導(dǎo)出數(shù)據(jù)到pdf以及打印數(shù)據(jù),自動(dòng)分頁。
靈活性超高,可自由更改源碼設(shè)置對齊方式、文字顏色、背景顏色等。
支持任意excel表格軟件,包括但不限于excel2003-2021、wps、openoffice等。
純Qt編寫,支持任意Qt版本+任意編譯器+任意系統(tǒng)。
體驗(yàn)地址:https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A 提取碼:o05q 文件名:bin_dataout.zip
國內(nèi)站點(diǎn):https://gitee.com/feiyangqingyun
國際站點(diǎn):https://github.com/feiyangqingyun
QString DataHelper::DataOut(quint8 type, const QString &file, const QString &title, const QString &sheet, const QStringList &content, const QStringList &columnNames, const QList<int> &columnWidths) { //設(shè)置結(jié)構(gòu)體數(shù)據(jù) DataContent dataContent; //填充內(nèi)容 dataContent.content = content; //設(shè)置列名列寬 dataContent.columnNames = columnNames; dataContent.columnWidths = columnWidths; //設(shè)置標(biāo)題 dataContent.title = title; //如果是導(dǎo)出數(shù)據(jù)則先判斷文件名稱是否為空,為空則彈出文件對話框選擇 QString fileName = file; if (fileName.isEmpty() && type < 3) { //不同的格式后綴 QString filter = "all files (*.*)"; if (type == 0) { filter = "csv files (*.csv)"; } else if (type == 1) { filter = "xls files (*.xls)"; } else if (type == 2) { filter = "pdf files (*.pdf)"; } fileName = QFileDialog::getSaveFileName(0, "選擇保存文件", "", filter); if (fileName.isEmpty()) { return fileName; } } //設(shè)置文件名 dataContent.fileName = fileName; //xls還需要設(shè)置表名 dataContent.sheetName = sheet; //調(diào)用靜態(tài)函數(shù) if (type == 0) { //重新組織內(nèi)容,前面寫入標(biāo)題,分隔符換成csv的定義的分隔符 QStringList list; //把標(biāo)題加到內(nèi)容中 list << columnNames.join(DataCsv::CsvSpliter); //重新更換分隔符 foreach (QString text, content) { text.replace(";", DataCsv::CsvSpliter); list << text; } DataCsv::outputData(fileName, list); } else if (type == 1) { DataXls::saveXls(dataContent); } else if (type == 2) { DataPrint::savePdf(dataContent); } else if (type == 3) { DataPrint::print(dataContent); } return fileName; }
感謝你的閱讀,相信你對“Qt數(shù)據(jù)庫應(yīng)用中如何將數(shù)據(jù)打印到pdf”這一問題有一定的了解,快去動(dòng)手實(shí)踐吧,如果想了解更多相關(guān)知識點(diǎn),可以關(guān)注億速云網(wǎng)站!小編會(huì)繼續(xù)為大家?guī)砀玫奈恼拢?/p>
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。