嵌入式Qt開發—Excel表格數據導出

有一個嵌入式Excel表格數據導出的需求:應用軟件運行于嵌入式Linux平臺上,在設備運行過程中,存儲了許多數據,這些數據想以表格的形式導出。考慮到Windows平臺的普遍性,需要將數據以excel表格形式導出,故選擇了一個開源庫:QtXlsxWriter,本文主要記錄其編譯構建過程。

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

?

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

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

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

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

?

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

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

?

  • bin :用于存放二進制文件。(該目錄為空)
  • examples:示例Demo的編譯構建輸出目錄。
  • include:該目錄存放關于QtXlsxWriter的頭文件

?

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

?

  • mkspecs:該目錄是Qt的模塊化標識目錄,用于向Qt開發環境添加Xlsx:

?

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

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

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

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

#include <QtCore>
#include "xlsxdocument.h"
#include "xlsxcellrange.h"
#include "xlsxchart.h"using namespace QXlsx;int main()
{//![0] 創建xlsx文檔對象。向單元格總寫入數據Document xlsx;for (int i = 1; i < 10; ++i) {xlsx.write(i, 1, i * i * i); // A1:A9xlsx.write(i, 2, i * i); // B1:B9xlsx.write(i, 3, i * i - 1); // C1:C9}//![0]//![1]創建圖表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);// Will generate three lines.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);// Will generate two lines.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文件。Document xlsx2("Book1.xlsx");xlsx2.saveAs("Book2.xlsx");return 0;
}

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

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

?

?

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/36401.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/36401.shtml
英文地址,請注明出處:http://en.pswp.cn/news/36401.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python庫打包

一、背景 想讓自己寫的python庫可以使用pip install xxx安裝。 二、環境準備 注冊PYPI賬號已經寫好的能正常使用的庫/方法/項目&#xff08;可以本地調用&#xff09;安裝依賴庫setuptools和twinw pip install setuptools pip install twine # 簡化將庫發布到PYPI流程的工…

“中國軟件杯”飛槳賽道晉級決賽現場名單公布

“中國軟件杯”大學生軟件設計大賽是由國家工業和信息化部、教育部、江蘇省人民政府共同主辦&#xff0c;是全國軟件行業規格最高、最具影響力的國家級一類賽事&#xff0c;為《全國普通高校競賽排行榜》榜單內賽事。今年&#xff0c;組委會聯合百度飛槳共同設立了“智能系統設…

C++11之后的C++標準特性宏定義方便功能特性測試

C是一個龐大的編程語言體系&#xff0c;它的高效性是可以直接連接硬件系統&#xff0c;它的靈活性是不斷迭代完善的通用語義機制&#xff0c;當下C的發展演進可謂一路狂奔。不同應用中需要知道C對應的平臺或者版本的功能特性&#xff0c;標準庫信息、C編譯器特性等&#xff0c;…

基于PHP的輕量級博客typecho

本文完成于 5 月中旬&#xff0c;發布時未在最新版本上驗證&#xff1b; 什么是 typecho &#xff1f; Typecho 是一款基于 PHP 的博客軟件&#xff0c;旨在成為世界上最強大的博客引擎。Typecho 在 GNU 通用公共許可證 2.0 下發布。支持多種數據庫&#xff0c;原生支持 Markdo…

24屆近5年南京大學自動化考研院校分析

今天給大家帶來的是南京大學控制考研分析 滿滿干貨&#xff5e;還不快快點贊收藏 一、南京大學 學校簡介 南京大學是一所歷史悠久、聲譽卓著的高等學府。其前身是創建于1902年的三江師范學堂&#xff0c;此后歷經兩江師范學堂、南京高等師范學校、國立東南大學、國立第四中…

JS 刪除的是最后一頁的最后一條,頁碼設置邏輯

刪除的場景&#xff1a; 解決思路&#xff1a; 1、計算操作后的總頁數 2、刪除成功之后的總頁數與當前總頁數進行比較 3、如果刪除成功之后的總頁數比小于當前總頁數&#xff0c;需要把當前頁碼減去1&#xff1b;否則&#xff0c;直接進行列表數據的請求 代碼實現 /*總條數…

VBA 學習筆記1 對象以及屬性

目錄 1 取得VBA對象1.1 取得工作簿對象1.2 取得工作表對象1.3 取得單元格對象1.4 取得對象的屬性1.5 文檔的方法1 進入vba 界面 方式之一&#xff1a; 快捷鍵&#xff1a;ALTERF11 運行方式之一&#xff1a; 進入vba界面&#xff0c;點擊綠色三角符號 1 取得VBA對象 1.1 取得…

DAY21

題目一 給定三個字符串str1、str2和aim&#xff0c; 如果aim包含且僅包含來自str1和str2的所有字符&#xff0c;而且在aim中屬于str1的字符 之間保持原來在str1中的順序&#xff0c;屬于str2的字符之間保持原來在str2中的順序&#xff0c;那么稱aim是str1和str2的交錯組成。實…

Springboot-Retrofit HTTP工具框架快速使用

在SpringBoot項目直接使用okhttp、httpClient或者RestTemplate發起HTTP請求&#xff0c;既繁瑣又不方便統一管理。 因此&#xff0c;在這里推薦一個適用于SpringBoot項目的輕量級HTTP客戶端框架retrofit-spring-boot-starter&#xff0c;使用非常簡單方便&#xff0c;同時又提供…

約數個數(質因子分解)

思路&#xff1a; &#xff08;1&#xff09;由數論基本定理&#xff0c;任何一個正整數x都能寫作&#xff0c;其中p1,p2..pk為x的質因子。 &#xff08;2&#xff09;由此可以推斷&#xff0c;要求一個數約數的個數&#xff0c;注意到約數就是p1,p2...pk的一種組合&#xff…

日常BUG—— SpringBoot項目DEBUG模式啟動慢、卡死。

&#x1f61c;作 者&#xff1a;是江迪呀??本文關鍵詞&#xff1a;日常BUG、BUG、問題分析??每日 一言 &#xff1a;存在錯誤說明你在進步&#xff01; 一、問題描述 我們調試程序時&#xff0c;需要使用DEBUG模式啟動SpringBoot項目&#xff0c; 有時候會發…

convert Auto-Login (cwallet.sso) Wallet into a PKCS12 compliant Wallet

一步不行嗎 &#xff1f; 1. If $JAVA_HOME is not set: a)For FMW 11g components associated with a WebLogic Domain or a FMW 12c Collocated OHS install run: $MIDDLEWARE_HOME/user_projects/domains/<domain>/bin/setDomainEnv.sh b) For FMW 11g Standalone…

側滑置頂,取消置頂

第一步:布局 <?xml version"1.0" encoding"utf-8"?> <com.ddmh.magic.camera.ui.widget.SwipeMenuLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"…

SQL | 使用通配符進行過濾

6-使用通配符進行過濾 6.1-LIKE操作符 前面介紹的所有操作符都是通過已知的值進行過濾&#xff0c;或者檢查某個范圍的值。但是如果我們想要查找產品名字中含有bag的數據&#xff0c;就不能使用前面那種過濾情況。 利用通配符&#xff0c;可以創建比較特定數據的搜索模式。 …

selenium 爬蟲

selenium 可以動態爬取網頁數據&#xff0c;就像真實用戶操作瀏覽器一樣&#xff0c;從終端用戶的角度測試應用程序&#xff0c;WebDriver通過原生瀏覽器支持或者瀏覽器擴展直接控制瀏覽器 webdriver下載 因為selenuim對瀏覽器的版本存在兼容問題&#xff0c;顧需要針對指定瀏…

SAP系統是什么呢?它有哪些優勢?

SAP系統是全球知名的企業資源規劃&#xff08;ERP&#xff09;解決方案供應商。它集成了財務、供應鏈管理、人力資源管理、銷售和客戶關系管理等多個功能模塊&#xff0c;為企業提供全面、集成的管理體驗。SAP系統已成為各行各業企業管理的智慧選擇&#xff0c;極大地提升了管理…

c++ 有元

友元分為兩部分內容 友元函數友元類 友元函數 問題&#xff1a;當我們嘗試去重載operator<<&#xff0c;然后發現沒辦法將operator<<重載成成員函數。因為cout的輸出流對象和隱含的this指針在搶占第一個參數的位置。this指針默認是第一個參數也就是左操作 數了。…

如何在vue3中加入markdown語法

1、首先需要安裝 md-editor-v3 yarn add md-editor-v3 或者是在vue圖形化界面中直接搜索 md-editor-v3 進行安裝。 2、引入該編輯頁 引入可以參考這個&#xff0c;根據自己的需求進行修改和添加。 <template><md-editor v-model"text"/> </templat…

基于dbn+svr的交通流量預測,dbn詳細原理

目錄 背影 DBN神經網絡的原理 DBN神經網絡的定義 受限玻爾茲曼機(RBM) DBN+SVR的交通流量預測 基本結構 主要參數 數據 MATALB代碼 結果圖 展望 背影 DBN是一種深度學習神經網絡,擁有提取特征,非監督學習的能力,是一種非常好的分類算法,本文將DBN+SVR用于交通流量預測…

二叉樹題目:二叉樹的直徑

文章目錄 題目標題和出處難度題目描述要求示例數據范圍 解法思路和算法代碼復雜度分析 題目 標題和出處 標題&#xff1a;二叉樹的直徑 出處&#xff1a;543. 二叉樹的直徑 難度 3 級 題目描述 要求 給定二叉樹的根結點 root \texttt{root} root&#xff0c;返回其直徑…