嵌入式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.mzph.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;返回其直径…