




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第Qt數(shù)據庫應用之實現(xiàn)csv文件轉xls目錄一、前言二、功能特點三、體驗地址四、效果圖五、相關代碼
一、前言
最近又多了個需求就是將csv格式的文件轉xls,需求一個接著一個,還好都是真實的需求,而且都是有用的需求,并不是不靠譜的需求,不靠譜的需求就比如程序自動識別手機殼顏色自動換背景顏色或者邊框顏色色系。csv轉xls,因為很多軟件或者網頁為了跨平臺做了極致簡單的導出數(shù)據形式,那就是csv格式的文本數(shù)據,有些用戶覺得這種格式用電子表格軟件打開后,格式顯得很擁擠不好看,所以需要自己的程序能夠提供靜態(tài)函數(shù)直接進行轉換,里面有多少個字段,轉成xls數(shù)據后也多少個字段,有多少行內容也就多少行內容,這樣打開后就是標準的xls文件,帶有一定格式。
之前封裝的通用導出函數(shù)就支持直接傳入數(shù)據集合和字段集合導出,所以這個需求的難點及主要工作量就是讀取csv文件,取出字段集合和內容集合,最后賦值給數(shù)據導出結構體即可。如果是標準的csv文件,那還是很容易讀取的,搞個QFile搭配QTextStream以文本流的形式一行行readLine讀取,理想很好顯示很打臉,自己按照標準csv要求導出的文件可以正常轉換,而用戶第三方軟件導出的csv格式的文件死活無法ok,用記事本打開一看,居然是bom格式,而且里面穿插了非常多的無效空格以及不可見字符\x200B,bom字節(jié)也好,不可見字符也好,用普通的QString是打印不出來的,必須轉成QByteArray然后再轉成16進制字符串就能看到,bom是文本最開始前面三個固定字節(jié)0xEF、0xBB、0xBF,只要讀取到文件前面存在這三個字節(jié)就說明是帶bom的文件。
格式搞明白了,代碼自然就出來了,通過readLine拿到數(shù)據后,傳入正則表達式調用remove方法移除不可見字符,這樣剩下的就是可見字符,然后判斷當前是否讀取的是第一行,是第一行則數(shù)據分割后傳入列名字段名稱集合中,其余都是一行行數(shù)據,按照要求的分隔符傳入隊列即可,最后一次性調用靜態(tài)數(shù)據導出函數(shù)打完收工,完美!總結:遇到困難要迎難而上,只要功夫深,一定能找到問題所在,尤其是代碼寫的多了以后,遇到問題會有多種甚至幾十種解決辦法。
二、功能特點
組件同時集成了導出數(shù)據到csv、xls、pdf和打印數(shù)據。所有操作全部提供靜態(tài)方法無需new,數(shù)據和屬性等各種參數(shù)設置采用結構體數(shù)據,極為方便。同時支持QTableView、QTableWidget、QStandardItemModel、QSqlTableModel等數(shù)據源。提供靜態(tài)方法直接傳入QTableView、QTableWidget控件,自動識別列名、列寬和數(shù)據內容。每組功能都提供單獨的完整的示例,注釋詳細,非常適合各階段Qter程序員。原創(chuàng)導出數(shù)據機制,不依賴任何office組件或者操作系統(tǒng)等第三方庫,支持嵌入式linux。速度超快,9個字段10萬行數(shù)據只需要2秒鐘完成。只需要四個步驟即可開始急速導出海量數(shù)據比如100W條記錄到Excel。同時提供直接寫入數(shù)據接口和多線程寫入數(shù)據接口,不卡主界面。可設置標題、副標題、表名。可設置導出數(shù)據的字段名、列名、列寬。可設置末尾列自動拉伸填充,默認拉伸更美觀。可設置是否啟用校驗過濾數(shù)據,啟用后符合規(guī)則的數(shù)據特殊顏色顯示??芍付ㄐr灥牧?、校驗規(guī)則、校驗值、校驗值數(shù)據類型。校驗規(guī)則支持精確等于==、大于、大于等于=、小于、小于等于=、不等于!=、包含contains。校驗值數(shù)據類型支持整型int、浮點型float、雙精度型double,默認文本字符串類型。可設置隨機背景顏色及需要隨機背景色的列集合。支持分組輸出數(shù)據,比如按照設備分組輸出數(shù)據,方便查看??稍O置csv分隔符、行內容分隔符、子內容分隔符??稍O置邊框寬度、自動填數(shù)據類型,默認自動數(shù)據類型開啟。可設置是否開啟數(shù)據單元格樣式,默認不開啟,不開啟可以節(jié)約大概30%的文件體積。可設置橫向排版、紙張邊距等,比如導出到pdf以及打印數(shù)據。提供圖文混排導出數(shù)據到pdf以及打印示例,自動分頁,支持多圖。提供一個打印樣板中同時包括橫向縱向排版示例。提供靜態(tài)函數(shù)將控件截圖導出到pdf文件。提供靜態(tài)函數(shù)將圖片轉成pdf文件。提供靜態(tài)函數(shù)將csv文件轉成xls文件,支持列寬表名等參數(shù)設置。針對每列可分別設置字段對齊樣式、內容對齊樣式,包括左對齊、居中對齊、右對齊。靈活性超高,可自由更改源碼設置對齊方式、文字顏色、背景顏色等。支持任意excel表格軟件,包括但不限于excel2003-2025、wps、openoffice等。純Qt編寫,支持任意Qt版本+任意編譯器+任意系統(tǒng)。
三、體驗地址
體驗地址:/s/1eeL5MTz0rifwtVLegRpkoQ提取碼:erxm文件名:bin_dataout.zip
國內站點:/feiyangqingyun
國際站點:/feiyangqingyun
四、效果圖
五、相關代碼
QStringDataOther::csvToXls(DataContentdataContent,constQStringcsvFile,constQStringxlsFile,boolquatation,constQStringspliter)
//為空則同名文件
QStringfileName=xlsFile;
if(fileName.isEmpty()){
fileName=csvFile;
fileName.replace("."+QFileInfo(csvFile).suffix(),".xls");
//內容集合
QStringListcontent;
//字段名稱
QListQStringcolumnNames;
//字段寬度
QListintcolumnWidths;
//讀取csv文件的內容
QFilefile(csvFile);
if(file.open(QIODevice::ReadOnly|QFile::Text)){
//采用文件流的形式讀取速度最快
QTextStreamstream(file);
DataCsv::initTextStream(csvFile,stream);
stream.seek(0);
//循環(huán)讀取文件
introw=0;
while(!stream.atEnd()){
QStringline=stream.readLine();
if(line.isEmpty()){
continue;
//刪除特殊字符,這個字符會導致讀取不到內容TNND
QStringpattern="[\\x200B]";
#if(QT_VERSION=QT_VERSION_CHECK(6,0,0))
line.remove(QRegularExpression(pattern));
#else
line.remove(QRegExp(pattern));
#endif
row++;
QStringListlist=line.split(spliter);
//第一行是字段
if(row==1){
intcount=list.count();
for(inti=0;icount;++i){
//去掉空字段名
QStringcolumnName=list.at(i);
if(columnName.isEmpty()){
continue;
columnNamescolumnName;
//設置過則取設置好的
if(dataContent.columnWidths.count()i){
columnWidthsdataContent.columnWidths.at(i);
}else{
columnWidths70;
continue;
QStringseparator=dataContent.separator;
//每行數(shù)據作為一個整體字符串帶分割符;存入
contentlist.join(separator);
if(content.count()0){
//填充內容
dataContent.content=content;
//設置列名列寬
dataC
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CNFAGS 15-2024綠色合成氨分級標準(試行)
- T/CCS 038-2023無人快速定量智能裝車系統(tǒng)技術規(guī)范
- 正規(guī)勞動合同書電子版6篇
- 租房合同家私家電補充協(xié)議7篇
- 上海核酸檢測試題及答案
- 中投集合資金信托合同3篇
- 【7語期末】渦陽縣2023-2024學年七年級下學期期末考試語文試題
- 房屋交易資金代收代付協(xié)議與房屋使用權轉讓合同3篇
- 大道十字段建設項目勞務作業(yè)合同5篇
- 民族建筑裝飾設計與應用
- 2024年江蘇省無錫市中考歷史真題(原卷版)
- 金礦合作協(xié)議書
- 山東科技大學投資經濟學(專升本)期末復習題
- 2025年公共安全與管理相關考試題及答案
- 《守株待兔》“課本劇”背景PPT
- 流體包裹體及應用PPT演示課件
- 防波堤課程設計
- 主動脈夾層PPT課件
- 甲狀腺相關性眼病(2)
- (完整版)拉管施工工藝
- 工程部績效考核表94061
評論
0/150
提交評論