国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

QT 使用第三方庫QtXlsx操作Excel表

這篇具有很好參考價(jià)值的文章主要介紹了QT 使用第三方庫QtXlsx操作Excel表。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一直以來,都想學(xué)習(xí)一下C/C++如何操作excel表,在網(wǎng)上調(diào)研了一下,覺得使用C/C++去操作很麻煩,遂轉(zhuǎn)向QT這邊;QT有一個(gè)自帶的類QAxObject,可以使用他去操作,但隨著了解的深入,覺得他并不是很好,有很多其他缺陷(例如必須電腦安裝了辦公軟件才可以進(jìn)行操作等),所以繼續(xù)調(diào)研,終于找到了QT的一個(gè)第三方庫可以很好的實(shí)現(xiàn):QtXlsx.?


目錄

一、下載QtXlsx

二、QtXlsx源碼嵌入QTCreator中使用

三、QtXlsx源碼編譯成為.lib庫使用

1. 下載安裝Perl

2. 編譯QtXlsx

3. 在vs中使用

四、QtXlsx

1. 知識(shí)點(diǎn)

2. 使用公式

五、練手小demo


Github下載:https://github.com/dbzhang800/QtXlsxWriter
官方文檔:http://qtxlsx.debao.me/

在Github下載后,可以直接添加到QtCreator項(xiàng)目中,也可以編譯成lib庫后再添加到VS中去使用。


一、下載QtXlsx

點(diǎn)擊鏈接進(jìn)入Github下載

qtxlsx,Qt,c++,qt,QtXlsx,Excel

下載解壓后得到如下文件

qtxlsx,Qt,c++,qt,QtXlsx,Excel


二、QtXlsx源碼嵌入QTCreator中使用

新建一個(gè)QTCreator窗體項(xiàng)目

將上圖src文件夾拷貝到該項(xiàng)目路徑中

qtxlsx,Qt,c++,qt,QtXlsx,Excel

之后雙擊項(xiàng)目中的.pro文件

將如下代碼拷貝到.pro文件中

include(src/xlsx/qtxlsx.pri)

qtxlsx,Qt,c++,qt,QtXlsx,Excel

Ctrl + s 保存一下,就可以把QtXlsx源碼模塊加載進(jìn)來啦!

可以在項(xiàng)目構(gòu)造函數(shù)中添加如下代碼進(jìn)行測(cè)試:

#include "xlsxdocument.h"
#include "xlsxchartsheet.h"
#include "xlsxcellrange.h"
#include "xlsxchart.h"
#include "xlsxrichstring.h"
#include "xlsxworkbook.h"

QXlsx::Document xlsx;
xlsx.write(1, 2, "Hello Qt!");
xlsx.write(2, 2, QString::fromLocal8Bit("中文"));
xlsx.saveAs("Text.xlsx");

編譯運(yùn)行后,就可以在項(xiàng)目路徑看到程序創(chuàng)建的Text.xlsx文件,打開后就可以看到寫入的?"Hello Qt!"和"中文".


三、QtXlsx源碼編譯成為.lib庫使用

1. 下載安裝Perl

下載安裝:Perl

下載鏈接:https://strawberryperl.com/

qtxlsx,Qt,c++,qt,QtXlsx,Excel

注意,這個(gè)是一定要下載安裝的,否則編譯lib庫會(huì)編譯失?。。?!?

下載后默認(rèn)安裝即可

qtxlsx,Qt,c++,qt,QtXlsx,Excel

2. 編譯QtXlsx

打開下載的QtXlsx文件夾,雙擊打開.pro

qtxlsx,Qt,c++,qt,QtXlsx,Excel

根據(jù)自己安裝的vs版本,選擇相應(yīng)的msvc編譯

qtxlsx,Qt,c++,qt,QtXlsx,Excel

?打開后直接點(diǎn)擊編譯

qtxlsx,Qt,c++,qt,QtXlsx,Excel

編譯完成后,就可以在相應(yīng)路徑找到編譯好的lib庫

qtxlsx,Qt,c++,qt,QtXlsx,Excel

3. 在vs中使用

新建vsQT項(xiàng)目,將include文件夾Qt5Xlsxd.dllQt5Xlsxd.lib拷貝到項(xiàng)目路徑中;

QtXlsxWriter-master文件夾整個(gè)拷貝到項(xiàng)目路徑中;

qtxlsx,Qt,c++,qt,QtXlsx,Excel

拷貝之后項(xiàng)目路徑文件,下圖方框中的就是我們需要拷貝的文件

qtxlsx,Qt,c++,qt,QtXlsx,Excel

右鍵項(xiàng)目 - 屬性 - C/C++ - 常規(guī) - 附加包含目錄,把頭文件路徑添加進(jìn)來

qtxlsx,Qt,c++,qt,QtXlsx,Excel

右鍵項(xiàng)目 - 屬性 - 鏈接器 - 輸入 - 附加依賴項(xiàng),添加Qt5Xlsxd.lib

之后,可以加入頭文件

#include "xlsxdocument.h"
#include "xlsxchartsheet.h"
#include "xlsxcellrange.h"
#include "xlsxchart.h"
#include "xlsxrichstring.h"
#include "xlsxworkbook.h"

在構(gòu)造函數(shù)中加入代碼

	QXlsx::Document xlsx;
	xlsx.write(1, 2, "Hello Qt!");
	xlsx.write(2, 2, QString::fromLocal8Bit("中文"));
	xlsx.saveAs("Text.xlsx");

編譯運(yùn)行,不出意外的話, 在項(xiàng)目路徑會(huì)一個(gè)名為Text.xlsx的文件,雙擊打開

qtxlsx,Qt,c++,qt,QtXlsx,Excel

數(shù)據(jù)也已經(jīng)寫入,測(cè)試成功!?


四、QtXlsx

1. 知識(shí)點(diǎn)

a. 定義

QXlsx::Document xlsx;

QXlsx::Document xlsx("Text.xlsx");

b. 往單元格中寫入數(shù)據(jù)

write

xlsx.write(2, 2, "中文"); ????????參數(shù)一是行,參數(shù)二是列,參數(shù)三是數(shù)據(jù)

xlsx.write("C3", "C3");? ? ? ? 參數(shù)一是對(duì)應(yīng)單元格名字,參數(shù)二是數(shù)據(jù)

c.?設(shè)置行高

setRowHeight

xlsx.setRowHeight(4, 30);????????設(shè)置第四行高度為30

d.?設(shè)置列寬

setColumnWidth

xlsx.setColumnWidth(3, 50); ????????設(shè)置第三列寬度為50

?e.?設(shè)置單元格樣式

QXlsx::Format format;

format.setFontColor(Qt::red); ???????????????? // 設(shè)置字體顏色為紅色

format.setFontBold(true);???????????????????????? // 設(shè)置加粗

format.setFontSize(30);????????????????????????????// 設(shè)置字體大小

format.setFontItalic(true); ???????????????????????? // 設(shè)置傾斜

format.setFontName("楷體"); ????????????????????// 設(shè)置字體

format.setPatternBackgroundColor(QColor(100, 200, 100));???????? // 設(shè)置單元格背景顏色

format.setHorizontalAlignment(QXlsx::Format::AlignHCenter); ?????// 設(shè)置水平居中,更多參考enum HorizontalAlignment枚舉

format.setVerticalAlignment(QXlsx::Format::AlignVCenter);? ? ? ? ?? // 設(shè)置垂直居中

format.setBorderColor(QColor(50, 50, 50));? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 設(shè)置邊框顏色

format.setFontUnderline(QXlsx::Format::FontUnderlineDouble); ???// 設(shè)置雙下劃線,更多參考enum FontUnderline枚舉

format.setFontUnderline(QXlsx::Format::FontUnderlineSingle); ?????// 設(shè)置單下劃線

format.setFillPattern(QXlsx::Format::PatternLightUp); ????????????????????// 填充方式,更多參考enum FillPattern枚舉

xlsx.write("C4", "紅色|加粗|30", format);? ? ? ? 作為第三個(gè)參數(shù)

f. 設(shè)置單元格方框

setBorderStyle

format.setBorderStyle(QXlsx::Format::BorderThin);????????更多參考enum BorderStyle枚舉

g.?合并單元格

mergeCells

xlsx.mergeCells("C4:E6");? ? ? ? 參數(shù)指定那個(gè)單元格區(qū)間

h.?取消合并

unmergeCells

xlsx.unmergeCells("C4:E6");? ? ? ? 參數(shù)指定的單元格區(qū)間一定是要已經(jīng)合并的,否則打開xlsx文件報(bào)錯(cuò)

i.?讀取單元格中的數(shù)據(jù)

read

QString str1 = xlsx.read(1, 1).toString();? ? ? ? 指定行列獲取

QString str2 = xlsx.read("B2").toString();? ? ? ? 指定單元格名字獲取

j.?獲得單元格對(duì)象

cellAt

QXlsx::Cell *cell = xlsx.cellAt("C4");? ? ? ? ? ? ? ? 獲取到的是指針對(duì)象

QXlsx::Cell *cell = xlsx.cellAt(1, 1);

cell->value();? ? ? ? 可以通過value()函數(shù)獲取單元格中的值

k.?添加工作表

addSheet

xlsx.addSheet("sheet_2");? ? ? ? 添加這一張名為“sheet_2”的工作表

l.?工作表重命名

renameSheet

xlsx.workbook()->renameSheet(1, "sheet_3");? ? ? ? 將索引為1(也就是第二張)的工作表命名為“sheet_3”

m.?選擇當(dāng)前工作表

selectSheet

xlsx.selectSheet("sheet_3");? ? ? ? 選擇名為“sheet_3”的工作表為當(dāng)前xlsx工作表

n.?獲得所有工作表的名字

sheetNames
QStringList sheetList = xlsx.sheetNames();? ? ? ? 獲取返回的是一個(gè)字符串鏈表

o.?獲取工作簿對(duì)象

workbook

QXlsx::Workbook *workBook = xlsx.workbook();

p. 獲取當(dāng)前工作簿的第一張sheet工作表

QXlsx::Worksheet *workSheet = static_cast<QXlsx::Worksheet*>(workBook->sheet(0));

q.?獲取當(dāng)前sheet表所使用到的行數(shù)

int row = workSheet->dimension().rowCount();

r.?獲取當(dāng)前sheet表所使用到的列數(shù)

int colum = workSheet->dimension().columnCount();

s. 遍歷sheet表中有數(shù)據(jù)的單元格

for (int i = 0; i < row; i++) {                                                               
    for (int j = 0; j < colum; j++) {                                                         
        // 獲取單元格                                                                              
        QXlsx::Cell *cell = workSheet->cellAt(i, j);    // 讀取單元格                              
        if (cell) {                                                                           
            qDebug() << "(" << i << ", " << j << ")\t" << cell->value().toString().trimmed();    // trimmed 去除字符串兩側(cè)的空格                                                                                              
        }                                                                                     
    }                                                                                         
}                                                                                             

t. 刪除單元格數(shù)據(jù)

xlsx.write("G5", "");? ? ? ? 直接重新設(shè)置為空即可

u. 修改單元格數(shù)據(jù)

xlsx.write("G6", "修改");? ? ? ? 重新對(duì)單元格寫入數(shù)據(jù)即可

v. 保存

saveAs

xlsx.saveAs("Text.xlsx");? ? ? ? 初始化xlsx對(duì)象時(shí)沒有指定excel文件,那么保存時(shí)使用這個(gè)

save

xlsx.save();? ? ? ? 初始化xlsx對(duì)象時(shí),指定了excel文件,那么保存時(shí)使用這個(gè)

w. 設(shè)置單元格中字符串不同字體顏色

RichString

QXlsx::Document xlsx("Text.xlsx");             
                                               
QXlsx::Format blue;     // 設(shè)置字體顏色              
blue.setFontColor(Qt::blue);                   
QXlsx::Format red;                             
red.setFontColor(Qt::red);                     
red.setFontSize(20);    // 設(shè)置字體大小              
QXlsx::Format bold;                            
bold.setFontBold(true); // 設(shè)置字體加粗              
                                               
QXlsx::RichString rich;                        
rich.addFragment("test", blue);                
rich.addFragment("QT", red);                   
rich.addFragment("中文", bold);                  
                                               
xlsx.write("C3", rich);                        
                                               
xlsx.save();                                   

qtxlsx,Qt,c++,qt,QtXlsx,Excel

x. 給單元格命名

xlsx.defineName("Cell_1", "=Sheet1!$A$1:$A$10");    // A1-A10命名為Cell_1
xlsx.defineName("Cell_2", "=Sheet1!$B$1:$B$10", "這是描述信息");  // B1-B10命名為Cell_2

qtxlsx,Qt,c++,qt,QtXlsx,Excel

?y. 賦值

xlsx.defineName("Factor", "=0.5");???????? // 將0.5賦值給Factor,相當(dāng)于變量賦值一樣,我們就可以使用這個(gè)變量了

2. 使用公式

xlsx.write(11, 1, "=SUM(Cell_1)");  // 計(jì)算A1-A10數(shù)據(jù)總和,并寫入(11,1)單元格中
xlsx.write(15, 1, "=SUM($A$1:$A$10)");  // 計(jì)算A1-A10數(shù)據(jù)總和,并寫入(15,1)單元格中

使用公式和變量

xlsx.write(12, 1, "=SUM(Cell_1)*Factor");   // 計(jì)算A1-A10數(shù)據(jù)總和再乘以0.5,并寫入(12,1)單元格中
xlsx.write(16, 1, "=SUM($A$1:$A$10)*Factor"); // 計(jì)算A1-A10數(shù)據(jù)總和再乘以0.5,并寫入(16,1)單元格中
xlsx.write(13, 2, "=SUM($B$1:B$10)*0.1");    // B1 - B10 計(jì)算總和后乘以0.1

五、練手小demo

自己寫的一個(gè)小demo,操作excel文件,自動(dòng)生成該excel文件,然后可以對(duì)其插入,刪除,保存,刷新的操作!

使用QTCreator進(jìn)行操作編寫!

qtxlsx,Qt,c++,qt,QtXlsx,Excel

?qtxlsx,Qt,c++,qt,QtXlsx,Excel

下載鏈接:Qtxlsx+QtCreator+自己編寫的對(duì)excel文件操作小案例-C++文檔類資源-CSDN文庫文章來源地址http://www.zghlxwxcb.cn/news/detail-610705.html

到了這里,關(guān)于QT 使用第三方庫QtXlsx操作Excel表的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 保姆式教程-Qt配置QtXlsx庫

    保姆式教程-Qt配置QtXlsx庫

    Qt Xlsx 模塊提供了一組類來讀寫 Excel 文件。它不需要 Microsoft Excel,可以在 Qt5 支持的任何平臺(tái)上使用。 該庫可用于: 生成一個(gè)新的 .xlsx 文件 從現(xiàn)有的 .xlsx 文件中提取數(shù)據(jù) 編輯現(xiàn)有的 .xlsx 文件 以上介紹節(jié)選自官方文檔 Qt Xlsx源代碼下載鏈接 3.1.1 查看是否安裝了Perl 如果前期

    2024年02月04日
    瀏覽(22)
  • C#使用第三方庫ExcelDataReader讀取excel數(shù)據(jù)并呈現(xiàn)

    之前有使用Oledb讀取Excel的代碼:C#讀取excel數(shù)據(jù)并呈現(xiàn) 使用這種方式讀取存在需要安裝數(shù)據(jù)庫引擎的隱患(如需要自?。?/p>

    2024年02月13日
    瀏覽(21)
  • windows下qt使用第三方庫(靜態(tài)鏈接庫lib)、靜態(tài)庫和動(dòng)態(tài)庫區(qū)別、動(dòng)態(tài)庫的使用。

    windows下qt使用第三方庫(靜態(tài)鏈接庫lib)、靜態(tài)庫和動(dòng)態(tài)庫區(qū)別、動(dòng)態(tài)庫的使用。

    這里主要是講述windows下qt使用第三方庫。 windows下qt使用第三方庫(靜態(tài)鏈接庫lib)。 為了能夠使測(cè)試更準(zhǔn)確,首先自己用qt創(chuàng)建了一個(gè)已經(jīng)封裝好的lib庫。 然后讓另一個(gè)項(xiàng)目去鏈接這個(gè)lib靜態(tài)庫,并且去調(diào)用里面的方法。 目的: 使 untitled項(xiàng)目 能夠使用 myllplib.lib 靜態(tài)庫,這

    2023年04月17日
    瀏覽(24)
  • Qt添加第三方字體

    Qt添加第三方字體

    最近開發(fā)項(xiàng)目時(shí),據(jù)說不能用系統(tǒng)自帶的微軟雅黑字體,于是找一個(gè)開源的字體,思源黑體,這個(gè)是google和Adobe公司合力開發(fā)的可以免費(fèi)使用。本篇記錄一下Qt使用第三方字體的方式。字體從下載之家下載http://www.downza.cn/soft/266042.html。下載解壓后有8種字體 代碼實(shí)現(xiàn) 運(yùn)行效果

    2024年02月16日
    瀏覽(93)
  • C++讀寫excel文件的的第三方庫

    用于讀取、寫入、創(chuàng)建和修改 Microsoft Excel? (.xlsx) 文件的 C++ 庫。 xlnt 是一個(gè)現(xiàn)代 C++ 庫,用于操作內(nèi)存中的電子表格以及從 XLSX 文件讀取/寫入它們,如ECMA 376 第 4 版中所述。xlnt 1.0 版的首次公開發(fā)布是在 2017 年 5 月 10 日。目前的工作重點(diǎn)是增加兼容性、提高性能以及集思廣

    2024年02月05日
    瀏覽(24)
  • 第三方開發(fā)工具—PyCharm(安裝、使用、漢化)超詳細(xì)、圖超多、注腳特多(Windows操作系統(tǒng))

    第三方開發(fā)工具—PyCharm(安裝、使用、漢化)超詳細(xì)、圖超多、注腳特多(Windows操作系統(tǒng))

    目錄 前言 一、PyCharm安裝 安裝地址 安裝步驟 二、第一次啟動(dòng) 三、使用(開始編程) 1.第一個(gè)文件夾 2.第一個(gè)程序 3.運(yùn)行第一個(gè)程序 四、漢化插件 五、總結(jié) 做任何事情時(shí),舒適的環(huán)境是非常重要的。一個(gè)好的軟件開發(fā)環(huán)境能給人帶來不一樣的體驗(yàn)。 先讓我們來看看PyCharm的

    2024年02月03日
    瀏覽(107)
  • QT---將第三方軟件窗口嵌入窗口中

    通過Windows API獲取窗口句柄。 代碼如下:

    2024年02月12日
    瀏覽(290)
  • redis(其它操作、管道)、django中使用redis(通用方案、 第三方模塊)、django緩存、celery介紹(celery的快速使用)

    redis(其它操作、管道)、django中使用redis(通用方案、 第三方模塊)、django緩存、celery介紹(celery的快速使用)

    1 redis其它操作 2 redis管道 3 django中使用redis 3.1 通用方案 3.2 第三方模塊 4 django緩存 5 celery介紹 5.1 celery的快速使用

    2024年02月07日
    瀏覽(26)
  • Qt Creator導(dǎo)入第三方so庫和jar包——Qt For Android

    Qt Creator導(dǎo)入第三方so庫和jar包——Qt For Android

    之前了解了在Android Studio下導(dǎo)入so庫和jar包,現(xiàn)在實(shí)現(xiàn)如何在Qt上導(dǎo)入so庫和jar包。 下面是我安卓開發(fā)(需調(diào)用安卓接口的代碼)的目錄(圖1),此目錄結(jié)構(gòu)和原生態(tài)環(huán)境(Android Studio)下開發(fā)的結(jié)構(gòu)很相似: 圖1 在Qt? Creator上導(dǎo)入so庫和jar包,比在Android Studio上簡(jiǎn)單很多,只需

    2024年04月29日
    瀏覽(87)
  • 深入解析C#中的第三方庫NPOI:Excel和Word文件處理的利器

    一、引言 在.NET開發(fā)中,操作Office文檔(特別是Excel和Word)是一項(xiàng)常見的需求。然而,在服務(wù)器端或無Microsoft Office環(huán)境的場(chǎng)景下,直接使用Office Interop可能會(huì)面臨挑戰(zhàn)。為了解決這個(gè)問題,開源庫NPOI應(yīng)運(yùn)而生,它提供了無需安裝Office即可創(chuàng)建、讀取和修改Excel (.xls, .xlsx) 和

    2024年03月18日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包