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;i< 10; ++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]创建图表
    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文档对象保存为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

    浏览量

    6800
  • BIN文件
    +关注

    关注

    0

    文章

    26

    浏览量

    8266
  • Linux开发
    +关注

    关注

    0

    文章

    33

    浏览量

    6892

原文标题:Excel表格数据导出,这个库不错

文章出处:【微信号:嵌入式小生,微信公众号:嵌入式小生】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    传统电子表格Excel和Teable多维表格数据库的区别?

    传统Excel是一款功能强大的电子表格软件,它的数据处理 分析以及图表制作等功能给工作带来了很多便利,但也有自身的局限性,本文介绍的多维表格Teable
    的头像 发表于 10-23 16:44 259次阅读

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

    在现代科技浪潮中,嵌入式技术已成为支撑各种智能设备和系统运行的核心力量。那么,究竟什么是嵌入式嵌入式系统,顾名思义,是将计算机的硬件和软件嵌入到某种设备或系统中,以实现特定功能的计算
    的头像 发表于 10-16 10:14 480次阅读

    何为Teable多维表格数据库,它仅仅是一个在线的智能表格吗?

    表格是一种创新的数据管理和协作工具,它结合了传统电子表格的直观界面与关系数据库的强大功能。用户不仅可以像在Excel中一样在二维
    的头像 发表于 10-14 16:13 341次阅读

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

    嵌入式主板,通常被称为嵌入式系统的核心组件,是一种用于控制和数据处理的计算机硬件,其设计旨在嵌入特定设备中执行专门任务。嵌入式主板如同是设备
    的头像 发表于 09-30 10:05 360次阅读

    嵌入式常用数据结构有哪些

    嵌入式编程中,数据结构的选择和使用对于程序的性能、内存管理以及开发效率都具有重要影响。嵌入式系统由于资源受限(如处理器速度、内存大小等),因此对数据结构的选择和使用尤为关键。以下是
    的头像 发表于 09-02 15:25 382次阅读

    嵌入式linux开发的基本步骤有哪些?

    嵌入式Linux开发是一个复杂的过程,涉及到硬件选择、操作系统移植、驱动开发、应用程序开发等多个方面。以下是嵌入式Linux开发的基本步骤,以及每个步骤的说明。 硬件选择 在开始嵌入式
    的头像 发表于 09-02 09:11 388次阅读

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

    、SPI、CAN、WIFI、MQTT等多种通信协议。 4. 使用开发工具:熟练掌握嵌入式开发工具,如编译器、调试器、仿真器和实时操作系统(RTOS)。 5. 阅读数据手册:仔细阅读你所使用的微控制器或
    发表于 06-21 10:01

    基于AMD、ARM、Intel和NVIDIA技术构建嵌入式工控机

    嵌入式工控机提供完全的可靠性、多样化的外形尺寸、可扩展的I/O和各种安装选项,采用工业级组件构建,并按照精确的要求进行成像,保证您获得可靠且可重复的嵌入式系统。
    的头像 发表于 05-22 17:13 504次阅读
    基于AMD、ARM、Intel和NVIDIA技术<b class='flag-5'>构建</b>的<b class='flag-5'>嵌入式</b>工控机

    嵌入式fpga是什么意思

    嵌入式FPGA是指将FPGA技术集成到嵌入式系统中的一种解决方案。嵌入式系统是一种为特定应用而设计的计算机系统,它通常包括处理器、内存、外设接口等组件,并且被嵌入到更大的设备或系统中,
    的头像 发表于 03-15 14:29 1189次阅读

    fpga是嵌入式

    FPGA(现场可编程门阵列)不是嵌入式系统,但FPGA在嵌入式系统中有着重要的应用。
    的头像 发表于 03-14 17:19 2138次阅读

    基于ZYNQ FPGA构建嵌入式的模拟计算板卡

    板卡基于高速400M 采样AD 和ZYNQ FPGA构建嵌入式的模拟计算板卡, 可用于工业雷达,行业雷达的场合。板卡使用工业级芯片。
    的头像 发表于 01-09 11:30 1187次阅读
    基于ZYNQ FPGA<b class='flag-5'>构建</b><b class='flag-5'>嵌入式</b>的模拟计算板卡

    基于Rust的嵌入式符合ACID的键值数据

    surrealkv -- 基于 Rust 的 low level、版本化、嵌入式、符合 ACID 的键值数据
    的头像 发表于 12-28 11:29 855次阅读

    用C语言构建高效的嵌入式程序

    嵌入式工程师在编写C语言程序时,需要注重效率和清晰的思路。本文将通过解析经典问题“猴子选大王”来展示如何用C语言思维方式构建高效、清晰的程序。
    的头像 发表于 12-21 09:27 595次阅读

    什么是嵌入式系统?嵌入式系统的具体应用

    嵌入式,一般是指嵌入式系统。用于控制、监视或者辅助操作机器和设备的装置。
    的头像 发表于 12-20 13:33 2388次阅读

    基于ARM的嵌入式电机控制处理器构建的模型设计平台

    电子发烧友网站提供《基于ARM的嵌入式电机控制处理器构建的模型设计平台.pdf》资料免费下载
    发表于 11-24 14:39 0次下载
    基于ARM的<b class='flag-5'>嵌入式</b>电机控制处理器<b class='flag-5'>构建</b>的模型设计平台