衡阳派盒市场营销有限公司

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

完善資料讓更多小伙伴認識你,還能領取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

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

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開發環境添加Xlsx:

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

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

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

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

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

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

usingnamespaceQXlsx;

intmain()
{
//![0]創建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

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

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了。






審核編輯:劉清

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

    關注

    0

    文章

    11

    瀏覽量

    6870
  • BIN文件
    +關注

    關注

    0

    文章

    26

    瀏覽量

    8389
  • Linux開發
    +關注

    關注

    0

    文章

    34

    瀏覽量

    6940

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

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

收藏 人收藏

    評論

    相關推薦

    新手怎么學嵌入式?

    基本的概念。嵌入式系統是一種將計算機技術嵌入到特定設備中的系統,它通常具有特定的功能和有限的資源。你需要學習一些計算機基礎知識,如數據結構、操作系統、計算機組成原理等。這些知識將幫助你理解嵌入
    發表于 12-12 10:51

    傳統電子表格Excel和Teable多維表格數據庫的區別?

    傳統Excel是一款功能強大的電子表格軟件,它的數據處理 分析以及圖表制作等功能給工作帶來了很多便利,但也有自身的局限性,本文介紹的多維表格Teable
    的頭像 發表于 10-23 16:44 ?452次閱讀

    什么是嵌入式?一文讀懂嵌入式主板

    在現代科技浪潮中,嵌入式技術已成為支撐各種智能設備和系統運行的核心力量。那么,究竟什么是嵌入式嵌入式系統,顧名思義,是將計算機的硬件和軟件嵌入到某種設備或系統中,以實現特定功能的計算
    的頭像 發表于 10-16 10:14 ?1575次閱讀

    何為Teable多維表格數據庫,它僅僅是一個在線的智能表格嗎?

    表格是一種創新的數據管理和協作工具,它結合了傳統電子表格的直觀界面與關系數據庫的強大功能。用戶不僅可以像在Excel中一樣在二維
    的頭像 發表于 10-14 16:13 ?557次閱讀

    嵌入式主板是什么意思?嵌入式主板全面解析

    嵌入式主板,通常被稱為嵌入式系統的核心組件,是一種用于控制和數據處理的計算機硬件,其設計旨在嵌入特定設備中執行專門任務。嵌入式主板如同是設備
    的頭像 發表于 09-30 10:05 ?966次閱讀

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

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

    嵌入式linux開發的基本步驟有哪些?

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

    學習hypervisor嵌入式產品安全設計

    Hypervisor的設計與實現,涵蓋嵌入式Hypervisor架構與核心組件、中斷隔離技術、內存隔離技術、循環表調度器、健康監控、分區間通信技術、內核資源管理模型、系統初始化過程、內核服務
    發表于 08-25 09:11

    嵌入式QT常見開發方式有哪些?

    提供的豐富組件如按鈕、文本框、窗口等構建傳統的桌面應用風格界面。對于嵌入式設備上的復雜用戶界面或者需要高性能響應的應用,Qt Widgets是一個較為常用的選擇。 2.Qt Designer配合C++
    發表于 08-12 10:05

    嵌入式開發前景怎么樣?

    嵌入式開發前景非常廣闊,這主要得益于物聯網、人工智能、大數據等技術的快速發展,以及嵌入式系統在各個領域的廣泛應用。以下是對嵌入式開發前景的詳細分析
    的頭像 發表于 07-10 09:00 ?2930次閱讀
    <b class='flag-5'>嵌入式</b>開發前景怎么樣?

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

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

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

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

    嵌入式熱門發展方向有哪些?

    熱門發展方向,包括但不限于: 1.物聯網: 隨著物聯網的快速發展,嵌入式系統在物聯網領域的應用也越來越廣泛。嵌入式系統可以用于物聯網設備的控制、監測和數據處理等方面。例如,在服務領域,如遠程點菜器等
    發表于 04-11 14:17

    嵌入式fpga是什么意思

    嵌入式FPGA是指將FPGA技術集成到嵌入式系統中的一種解決方案。嵌入式系統是一種為特定應用而設計的計算機系統,它通常包括處理器、內存、外設接口等組件,并且被嵌入到更大的設備或系統中,
    的頭像 發表于 03-15 14:29 ?1375次閱讀

    fpga是嵌入式

    FPGA(現場可編程門陣列)不是嵌入式系統,但FPGA在嵌入式系統中有著重要的應用。
    的頭像 發表于 03-14 17:19 ?2520次閱讀
    玩百家乐官网678娱乐城| 鸿运国际娱乐| 利都百家乐国际娱乐| 寿光市| 太阳城百家乐网址--| 句容市| 威尼斯人娱乐注册| 百家乐官网国际娱乐网| 大发888娱乐场老虎机| 凯旋门娱乐城开户| 百家乐有方法赚反水| 百家乐官网tt娱乐城| 威尼斯人娱乐场内幕| 百家乐官网英皇娱乐| 必博网址| 大发888线上娱乐城二十一点| 老k百家乐官网的玩法技巧和规则| 澳门美高梅| 大发8888游戏平台| 大发888大法8668| 现场百家乐投注| 百家乐官网赌钱| 威尼斯人娱乐城筹码| 杰克百家乐玩法| 百家乐官网大娱乐场开户注册| 沁水县| 大发888官方游戏平台| 威尼斯人娱乐场官网h00| 星期8百家乐的玩法技巧和规则 | 金冠娱乐城官网| 找真人百家乐的玩法技巧和规则| 百家乐视频对对碰| 金杯百家乐官网的玩法技巧和规则| 隆子县| 大发888游戏| 什么是百家乐的大路| 顶尖百家乐对单| 百家乐官网开庄几率| 百家乐官网博送彩金18| 永利百家乐官网娱乐| 金都娱乐城真人娱乐|