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

    浏览量

    6823
  • BIN文件
    +关注

    关注

    0

    文章

    26

    浏览量

    8283
  • Linux开发
    +关注

    关注

    0

    文章

    33

    浏览量

    6903

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

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

收藏 人收藏

    评论

    相关推荐

    新手怎么学嵌入式?

    基本的概念。嵌入式系统是一种将计算机技术嵌入到特定设备中的系统,它通常具有特定的功能和有限的资源。你需要学习一些计算机基础知识,如数据结构、操作系统、计算机组成原理等。这些知识将帮助你理解嵌入
    发表于 12-12 10:51

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

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

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

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

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

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

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

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

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

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

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

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

    嵌入式QT常见开发方式有哪些?

    提供的丰富组件如按钮、文本框、窗口等构建传统的桌面应用风格界面。对于嵌入式设备上的复杂用户界面或者需要高性能响应的应用,Qt Widgets是一个较为常用的选择。 2.Qt Designer配合C++
    发表于 08-12 10:05

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

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

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

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

    fpga是嵌入式

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

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

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

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

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