0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

記錄嵌入式Excel表格數據導出的構建過程

嵌入式小生 ? 來源:嵌入式小生 ? 作者:iriczhao ? 2022-10-27 11:14 ? 次閱讀

最近有一個嵌入式Excel表格數據導出的需求:應用軟件運行于嵌入式Linux平臺上,在設備運行過程中,存儲了許多數據,這些數據想以表格的形式導出。

考慮到Windows平臺的普遍性,需要將數據以excel表格形式導出,故選擇了一個開源庫:QtXlsxWriter,本文主要記錄其編譯構建過程。

從下列地址https://github.com/dbzhang800/QtXlsxWriter獲取安裝包,將源碼包解壓縮,目錄結構如下圖所示:

8a47ddd8-4575-11ed-96c9-dac502259ad0.png

example目錄下存放的是示例Demo。

src目錄下存放的是xlsx的源碼。

tests目錄下存放的是測試工程。

QtXlsxWriter可以通過QtCreator來編譯構建,所以我們打開安裝在linux平臺上的QtCreator,然后使用QtCreator打開QtXlsxWriter項目(選擇源碼目錄下的xxx.pro文件)。選擇對應的編譯構建套件后,如下圖所示:

8aaa8e6a-4575-11ed-96c9-dac502259ad0.png

點擊項目管理視圖中的頂級目錄,單擊右鍵,選擇“構建”,即可構建QtXlsxWriter:

8ad7df3c-4575-11ed-96c9-dac502259ad0.png

編譯成功后,將在源碼目錄的同級下創(chuàng)建構建輸出目錄,該目錄結構如下圖所示:

8afdbc2a-4575-11ed-96c9-dac502259ad0.png

bin :用于存放二進制文件。(該目錄為空)

examples:示例Demo的編譯構建輸出目錄。

include:該目錄存放關于QtXlsxWriter的頭文件:

8b33abfa-4575-11ed-96c9-dac502259ad0.png

lib:該目錄用于存放QtXlsxWriter的庫目錄:

8b5f9d78-4575-11ed-96c9-dac502259ad0.png

mkspecs:該目錄是Qt的模塊化標識目錄,用于向Qt開發(fā)環(huán)境添加Xlsx:

8b866110-4575-11ed-96c9-dac502259ad0.png

tests:該目錄用于存放測試工程。

在上述目錄中,include、lib、mkspecs目錄是比較重要的目錄。在搭建QtXlsxWriter開發(fā)環(huán)境時需要使用到。

將構建完成后的目錄下的bin、include、lib、mkspecs、src目錄拷貝到Qt的安裝目錄下,以在QtCreator中可以使用Qt+=xlsx加載模塊

然后可以編譯構建一個demo示例來測試一下。本文以chart為例,其代碼如下:

#include
#include"xlsxdocument.h"
#include"xlsxcellrange.h"
#include"xlsxchart.h"

usingnamespaceQXlsx;

intmain()
{
//![0]創(chuàng)建xlsx文檔對象。向單元格總寫入數據
Documentxlsx;
for(inti=1;isetChartType(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文檔對象保存為Book1.xlsx文件。
xlsx.saveAs("Book1.xlsx");
//![2]

//保存為Book2.xlsx文件。
Documentxlsx2("Book1.xlsx");
xlsx2.saveAs("Book2.xlsx");
return0;
}

選中項目管理視圖中的example目錄,依次展開,選擇chart目錄,右鍵單擊,選中“構建”選項,即可對chart示例演示進行構建。

然后在chart的編譯構建目錄下,將生成如下文件:

8ba2da34-4575-11ed-96c9-dac502259ad0.png

在終端運行一下生成的程序(此處是chart):

8bc51ae0-4575-11ed-96c9-dac502259ad0.png

運行完成后,將在同級目錄下創(chuàng)建兩個文件:如下圖所示:

8bf79204-4575-11ed-96c9-dac502259ad0.png

注:由于在ubuntu編譯構建,沒有安裝能打開xlsx的應用軟件,故將其拷貝到Windows下使用wps打開。打開后圖表如下圖所示:

8c356296-4575-11ed-96c9-dac502259ad0.png

以上過程是在Ubuntu18.04下進行的,如果想讓QtXlsxWriter運行于嵌入式linux平臺上,只需要在QtCreator中選擇編譯構建套件時,選擇對應的交叉編譯套件編譯,在編譯完成后,將構建出的庫文件復制到Linux的鏈接庫目錄下(一般為/usr/lib),則可以在嵌入式Linux平臺上使用QtXlsxWriter了。






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • QTcreator
    +關注

    關注

    0

    文章

    11

    瀏覽量

    6773
  • BIN文件
    +關注

    關注

    0

    文章

    26

    瀏覽量

    8231
  • Linux開發(fā)

    關注

    0

    文章

    28

    瀏覽量

    6863

原文標題:Excel表格數據導出,這個庫不錯

文章出處:【微信號:嵌入式小生,微信公眾號:嵌入式小生】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    嵌入式常用數據結構有哪些

    嵌入式編程中,數據結構的選擇和使用對于程序的性能、內存管理以及開發(fā)效率都具有重要影響。嵌入式系統(tǒng)由于資源受限(如處理器速度、內存大小等),因此對數據結構的選擇和使用尤為關鍵。以下是
    的頭像 發(fā)表于 09-02 15:25 ?218次閱讀

    嵌入式linux開發(fā)的基本步驟有哪些?

    嵌入式Linux開發(fā)是一個復雜的過程,涉及到硬件選擇、操作系統(tǒng)移植、驅動開發(fā)、應用程序開發(fā)等多個方面。以下是嵌入式Linux開發(fā)的基本步驟,以及每個步驟的說明。 硬件選擇 在開始嵌入式
    的頭像 發(fā)表于 09-02 09:11 ?180次閱讀

    如何提升嵌入式編程能力?

    、SPI、CAN、WIFI、MQTT等多種通信協議。 4. 使用開發(fā)工具:熟練掌握嵌入式開發(fā)工具,如編譯器、調試器、仿真器和實時操作系統(tǒng)(RTOS)。 5. 閱讀數據手冊:仔細閱讀你所使用的微控制器或
    發(fā)表于 06-21 10:01

    基于AMD、ARM、Intel和NVIDIA技術構建嵌入式工控機

    嵌入式工控機提供完全的可靠性、多樣化的外形尺寸、可擴展的I/O和各種安裝選項,采用工業(yè)級組件構建,并按照精確的要求進行成像,保證您獲得可靠且可重復的嵌入式系統(tǒng)。
    的頭像 發(fā)表于 05-22 17:13 ?411次閱讀
    基于AMD、ARM、Intel和NVIDIA技術<b class='flag-5'>構建</b>的<b class='flag-5'>嵌入式</b>工控機

    fpga是嵌入式

    FPGA(現場可編程門陣列)不是嵌入式系統(tǒng),但FPGA在嵌入式系統(tǒng)中有著重要的應用。
    的頭像 發(fā)表于 03-14 17:19 ?1800次閱讀

    基于ZYNQ FPGA構建嵌入式的模擬計算板卡

    板卡基于高速400M 采樣AD 和ZYNQ FPGA構建嵌入式的模擬計算板卡, 可用于工業(yè)雷達,行業(yè)雷達的場合。板卡使用工業(yè)級芯片。
    的頭像 發(fā)表于 01-09 11:30 ?1043次閱讀
    基于ZYNQ FPGA<b class='flag-5'>構建</b><b class='flag-5'>嵌入式</b>的模擬計算板卡

    用C語言構建高效的嵌入式程序

    嵌入式工程師在編寫C語言程序時,需要注重效率和清晰的思路。本文將通過解析經典問題“猴子選大王”來展示如何用C語言思維方式構建高效、清晰的程序。
    的頭像 發(fā)表于 12-21 09:27 ?513次閱讀

    什么是嵌入式系統(tǒng)?嵌入式系統(tǒng)的具體應用

    嵌入式,一般是指嵌入式系統(tǒng)。用于控制、監(jiān)視或者輔助操作機器和設備的裝置。
    的頭像 發(fā)表于 12-20 13:33 ?2131次閱讀

    基于ARM的嵌入式電機控制處理器構建的模型設計平臺

    電子發(fā)燒友網站提供《基于ARM的嵌入式電機控制處理器構建的模型設計平臺.pdf》資料免費下載
    發(fā)表于 11-24 14:39 ?0次下載
    基于ARM的<b class='flag-5'>嵌入式</b>電機控制處理器<b class='flag-5'>構建</b>的模型設計平臺

    嵌入式軟件與生態(tài)系統(tǒng):為嵌入式開發(fā)者提供必要的組件

    Xilinx 提供兩款工具來構建和部署嵌入式 Linux 解決方案。這些工具有 Xilinx 的 PetaLinux 和 Yocto 的開源項目。PetaLinux 為用戶提供一個 GUI 來快速
    的頭像 發(fā)表于 10-31 16:59 ?505次閱讀
    <b class='flag-5'>嵌入式</b>軟件與生態(tài)系統(tǒng):為<b class='flag-5'>嵌入式</b>開發(fā)者提供必要的組件

    嵌入式課程設計報告-數據排序過程演示

    電子發(fā)燒友網站提供《嵌入式課程設計報告-數據排序過程演示.doc》資料免費下載
    發(fā)表于 10-26 09:30 ?0次下載
    <b class='flag-5'>嵌入式</b>課程設計報告-<b class='flag-5'>數據</b>排序<b class='flag-5'>過程</b>演示

    用Labview開發(fā)的DBC文件轉Excel表格文件的VI

    使用Labview軟件開發(fā)的DBC文件轉Excel表格文件的VI
    發(fā)表于 10-25 18:23 ?31次下載

    一種多功能汽車行駛記錄儀的嵌入式系統(tǒng)設計

    電子發(fā)燒友網站提供《一種多功能汽車行駛記錄儀的嵌入式系統(tǒng)設計.pdf》資料免費下載
    發(fā)表于 10-13 11:21 ?0次下載
    一種多功能汽車行駛<b class='flag-5'>記錄</b>儀的<b class='flag-5'>嵌入式</b>系統(tǒng)設計

    基于嵌入式系統(tǒng)的行車記錄儀的設計

    電子發(fā)燒友網站提供《基于嵌入式系統(tǒng)的行車記錄儀的設計.doc》資料免費下載
    發(fā)表于 10-13 09:20 ?1次下載
    基于<b class='flag-5'>嵌入式</b>系統(tǒng)的行車<b class='flag-5'>記錄</b>儀的設計

    百萬級別excel導出功能如何實現

    最近我做過一個MySQL 百萬級別 數據excel 導出功能,已經正常上線使用了。 這個功能挺有意思的,里面需要注意的細節(jié)還真不少,現在拿出來跟大家分享一下,希望對你會有所幫助。 原始需求:用戶
    的頭像 發(fā)表于 09-25 11:38 ?953次閱讀
    百萬級別<b class='flag-5'>excel</b><b class='flag-5'>導出</b>功能如何實現