最近有一個(gè)嵌入式Excel表格數(shù)據(jù)導(dǎo)出的需求:應(yīng)用軟件運(yùn)行于嵌入式Linux平臺(tái)上,在設(shè)備運(yùn)行過(guò)程中,存儲(chǔ)了許多數(shù)據(jù),這些數(shù)據(jù)想以表格的形式導(dǎo)出。
考慮到Windows平臺(tái)的普遍性,需要將數(shù)據(jù)以excel表格形式導(dǎo)出,故選擇了一個(gè)開(kāi)源庫(kù):QtXlsxWriter,本文主要記錄其編譯構(gòu)建過(guò)程。
從下列地址https://github.com/dbzhang800/QtXlsxWriter獲取安裝包,將源碼包解壓縮,目錄結(jié)構(gòu)如下圖所示:
example目錄下存放的是示例Demo。
src目錄下存放的是xlsx的源碼。
tests目錄下存放的是測(cè)試工程。
QtXlsxWriter可以通過(guò)QtCreator來(lái)編譯構(gòu)建,所以我們打開(kāi)安裝在linux平臺(tái)上的QtCreator,然后使用QtCreator打開(kāi)QtXlsxWriter項(xiàng)目(選擇源碼目錄下的xxx.pro文件)。選擇對(duì)應(yīng)的編譯構(gòu)建套件后,如下圖所示:
點(diǎn)擊項(xiàng)目管理視圖中的頂級(jí)目錄,單擊右鍵,選擇“構(gòu)建”,即可構(gòu)建QtXlsxWriter:
編譯成功后,將在源碼目錄的同級(jí)下創(chuàng)建構(gòu)建輸出目錄,該目錄結(jié)構(gòu)如下圖所示:
bin :用于存放二進(jìn)制文件。(該目錄為空)
examples:示例Demo的編譯構(gòu)建輸出目錄。
include:該目錄存放關(guān)于QtXlsxWriter的頭文件:
lib:該目錄用于存放QtXlsxWriter的庫(kù)目錄:
mkspecs:該目錄是Qt的模塊化標(biāo)識(shí)目錄,用于向Qt開(kāi)發(fā)環(huán)境添加X(jué)lsx:
tests:該目錄用于存放測(cè)試工程。
在上述目錄中,include、lib、mkspecs目錄是比較重要的目錄。在搭建QtXlsxWriter開(kāi)發(fā)環(huán)境時(shí)需要使用到。
將構(gòu)建完成后的目錄下的bin、include、lib、mkspecs、src目錄拷貝到Qt的安裝目錄下,以在QtCreator中可以使用Qt+=xlsx加載模塊
然后可以編譯構(gòu)建一個(gè)demo示例來(lái)測(cè)試一下。本文以chart為例,其代碼如下:
#include#include"xlsxdocument.h" #include"xlsxcellrange.h" #include"xlsxchart.h" usingnamespaceQXlsx; intmain() { //![0]創(chuàng)建xlsx文檔對(duì)象。向單元格總寫入數(shù)據(jù) Documentxlsx; for(inti=1;i10;?++i)?{ ????????xlsx.write(i,?1,?i?*?i?*?i);?//?A1:A9 ????????xlsx.write(i,?2,?i?*?i);?//?B1:B9 ????????xlsx.write(i,?3,?i?*?i?-?1);?//?C1:C9 ????} ????//![0] ????//![1]創(chuàng)建圖表 ????Chart?*pieChart?=?xlsx.insertChart(3,?3,?QSize(300,?300)); ????pieChart->setChartType(Chart::CT_Pie); pieChart->addSeries(CellRange("A1:A9")); pieChart->addSeries(CellRange("B1:B9")); pieChart->addSeries(CellRange("C1:C9")); Chart*pie3DChart=xlsx.insertChart(3,9,QSize(300,300)); pie3DChart->setChartType(Chart::CT_Pie3D); pie3DChart->addSeries(CellRange("A1:C9")); Chart*barChart=xlsx.insertChart(23,3,QSize(300,300)); barChart->setChartType(Chart::CT_Bar); barChart->addSeries(CellRange("A1:C9")); Chart*bar3DChart=xlsx.insertChart(23,9,QSize(300,300)); bar3DChart->setChartType(Chart::CT_Bar3D); bar3DChart->addSeries(CellRange("A1:C9")); Chart*lineChart=xlsx.insertChart(43,3,QSize(300,300)); lineChart->setChartType(Chart::CT_Line); lineChart->addSeries(CellRange("A1:C9")); Chart*line3DChart=xlsx.insertChart(43,9,QSize(300,300)); line3DChart->setChartType(Chart::CT_Line3D); line3DChart->addSeries(CellRange("A1:C9")); Chart*areaChart=xlsx.insertChart(63,3,QSize(300,300)); areaChart->setChartType(Chart::CT_Area); areaChart->addSeries(CellRange("A1:C9")); Chart*area3DChart=xlsx.insertChart(63,9,QSize(300,300)); area3DChart->setChartType(Chart::CT_Area3D); area3DChart->addSeries(CellRange("A1:C9")); Chart*scatterChart=xlsx.insertChart(83,3,QSize(300,300)); scatterChart->setChartType(Chart::CT_Scatter); //Willgeneratethreelines. scatterChart->addSeries(CellRange("A1:A9")); scatterChart->addSeries(CellRange("B1:B9")); scatterChart->addSeries(CellRange("C1:C9")); Chart*scatterChart_2=xlsx.insertChart(83,9,QSize(300,300)); scatterChart_2->setChartType(Chart::CT_Scatter); //Willgeneratetwolines. scatterChart_2->addSeries(CellRange("A1:C9")); Chart*doughnutChart=xlsx.insertChart(103,3,QSize(300,300)); doughnutChart->setChartType(Chart::CT_Doughnut); doughnutChart->addSeries(CellRange("A1:C9")); //![1] //![2]將xlsx文檔對(duì)象保存為Book1.xlsx文件。 xlsx.saveAs("Book1.xlsx"); //![2] //保存為Book2.xlsx文件。 Documentxlsx2("Book1.xlsx"); xlsx2.saveAs("Book2.xlsx"); return0; }
選中項(xiàng)目管理視圖中的example目錄,依次展開(kāi),選擇chart目錄,右鍵單擊,選中“構(gòu)建”選項(xiàng),即可對(duì)chart示例演示進(jìn)行構(gòu)建。
然后在chart的編譯構(gòu)建目錄下,將生成如下文件:
在終端運(yùn)行一下生成的程序(此處是chart):
運(yùn)行完成后,將在同級(jí)目錄下創(chuàng)建兩個(gè)文件:如下圖所示:
注:由于在ubuntu編譯構(gòu)建,沒(méi)有安裝能打開(kāi)xlsx的應(yīng)用軟件,故將其拷貝到Windows下使用wps打開(kāi)。打開(kāi)后圖表如下圖所示:
以上過(guò)程是在Ubuntu18.04下進(jìn)行的,如果想讓QtXlsxWriter運(yùn)行于嵌入式linux平臺(tái)上,只需要在QtCreator中選擇編譯構(gòu)建套件時(shí),選擇對(duì)應(yīng)的交叉編譯套件編譯,在編譯完成后,將構(gòu)建出的庫(kù)文件復(fù)制到Linux的鏈接庫(kù)目錄下(一般為/usr/lib),則可以在嵌入式Linux平臺(tái)上使用QtXlsxWriter了。
審核編輯:劉清
-
QTcreator
+關(guān)注
關(guān)注
0文章
11瀏覽量
6908 -
BIN文件
+關(guān)注
關(guān)注
0文章
26瀏覽量
8436 -
Linux開(kāi)發(fā)
+關(guān)注
關(guān)注
0文章
34瀏覽量
7034
原文標(biāo)題:Excel表格數(shù)據(jù)導(dǎo)出,這個(gè)庫(kù)不錯(cuò)
文章出處:【微信號(hào):嵌入式小生,微信公眾號(hào):嵌入式小生】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
新手怎么學(xué)嵌入式?
傳統(tǒng)電子表格Excel和Teable多維表格數(shù)據(jù)庫(kù)的區(qū)別?
什么是嵌入式?一文讀懂嵌入式主板
何為Teable多維表格數(shù)據(jù)庫(kù),它僅僅是一個(gè)在線的智能表格嗎?
嵌入式主板是什么意思?嵌入式主板全面解析
嵌入式常用數(shù)據(jù)結(jié)構(gòu)有哪些
嵌入式linux開(kāi)發(fā)的基本步驟有哪些?
學(xué)習(xí)hypervisor嵌入式產(chǎn)品安全設(shè)計(jì)
嵌入式QT常見(jiàn)開(kāi)發(fā)方式有哪些?
嵌入式開(kāi)發(fā)前景怎么樣?

如何提升嵌入式編程能力?
基于AMD、ARM、Intel和NVIDIA技術(shù)構(gòu)建的嵌入式工控機(jī)

評(píng)論