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

    浏览量

    6713
  • BIN文件
    +关注

    关注

    0

    文章

    25

    浏览量

    8173
  • Linux开发
    +关注

    关注

    0

    文章

    23

    浏览量

    6824

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

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

收藏 人收藏

    评论

    相关推荐

    嵌入式热门发展方向有哪些?

    热门发展方向,包括但不限于: 1.物联网: 随着物联网的快速发展,嵌入式系统在物联网领域的应用也越来越广泛。嵌入式系统可以用于物联网设备的控制、监测和数据处理等方面。例如,在服务领域,如远程点菜器等
    发表于 04-11 14:17

    Excel构建了一个16位的CPU,如何做到的?

    据EDN电子技术设计报道,YouTube 上的 Inkbox在 Excel构建并以3Hz时钟频率运行,并具有 128KB RAM、16 色 128x128 像素显示屏和自定义汇编语言,所有这些都在流行的电子表格中运行。
    发表于 01-31 16:36 247次阅读
    用<b class='flag-5'>Excel</b><b class='flag-5'>构建</b>了一个16位的CPU,如何做到的?

    嵌入式课程设计报告-数据排序过程演示

    电子发烧友网站提供《嵌入式课程设计报告-数据排序过程演示.doc》资料免费下载
    发表于 10-26 09:30 0次下载
    <b class='flag-5'>嵌入式</b>课程设计报告-<b class='flag-5'>数据</b>排序<b class='flag-5'>过程</b>演示

    用Labview开发的DBC文件转Excel表格文件的VI

    使用Labview软件开发的DBC文件转Excel表格文件的VI
    发表于 10-25 18:23 12次下载

    基于嵌入式系统的行车记录仪的设计

    电子发烧友网站提供《基于嵌入式系统的行车记录仪的设计.doc》资料免费下载
    发表于 10-13 09:20 1次下载
    基于<b class='flag-5'>嵌入式</b>系统的行车<b class='flag-5'>记录</b>仪的设计

    什么是嵌入式Linux?

    什么是嵌入式Linux? 对于很多电气、电信、通信专业的同学来说,对口专业就业方向主要有软、硬件两个方向。无论是对于学生还是就业而言,软硬件的开发学习,嵌入式物联网在近年来无疑是一个摆在面前
    发表于 10-11 13:47

    百万级别excel导出功能如何实现

    最近我做过一个MySQL 百万级别 数据excel 导出功能,已经正常上线使用了。 这个功能挺有意思的,里面需要注意的细节还真不少,现在拿出来跟大家分享一下,希望对你会有所帮助。 原始需求:用户
    的头像 发表于 09-25 11:38 713次阅读
    百万级别<b class='flag-5'>excel</b><b class='flag-5'>导出</b>功能如何实现

    嵌入式Linux应用开发的完全手册

    嵌入式Linux在嵌入式领域发展迅速、需求旺盛,但是嵌入式Linux 的入门很难。初学者多是自己琢磨,效率不高。学习过程中碰到的问题千奇百怪,解决后却往往发现是极其低级的错误,以作者为
    发表于 09-25 07:12

    关于labview波形图表的导出数据EXCEL的保存问题

    使用波形图标调用节点或者直接右键保存数据EXCEL可以实现功能,但是先生成图表再保存,每次还得手动保存到指定位置。能不能直接指定一个保存的路径,调用了以后直接保存完成。像波形图标导出图像一样,指定好保存的文件名和路径. 左侧为
    发表于 09-16 15:45

    labview怎么读取EXCEL表格的填充颜色。。。

    目前在读取EXCEL表的数据是可以的,但是想读取出EXCEL表格的填充颜色,比如依次对表格进行索引,然后返回有颜色的列,或者行,应该怎么编
    发表于 07-29 13:48

    如何处理百万行EXCEL文件?

    Excel 表格在后台管理系统中使用非常广泛,多用来进行批量配置、数据导出工作。在日常开发中,我们也免不了进行 Excel
    的头像 发表于 07-06 10:11 640次阅读
    如何处理百万行<b class='flag-5'>EXCEL</b>文件?

    嵌入式学习路线你知道吗?

    文件系统的定制、BootLoader、内核和根文件系统的烧写。这一阶段的主要目的是掌握带有操作系统的嵌入式系统的构建和烧写过程,以及对嵌入式系统软件的总体构成有个整体认识,为我们接下来
    发表于 06-14 16:00

    如何构建我自己的嵌入式C编译器?

    只是为了获得如何构建我自己的嵌入式 C 编译器的知识,如预处理、汇编、链接器、生成 Hex 文件、elf 文件、映射文件。 任何有用的链接可用? 我是嵌入式软件工程师,并且具有 c 编程 python、bat 脚本方面的知识。
    发表于 06-08 08:10

    嵌入式Qt-表格使用测试

    本篇介绍了Qt中QTable Widget这个表格组件的使用,后续可增加SQLite数据库功能,利用表格可以直观的展示出嵌入式设备的数据库中
    的头像 发表于 05-14 12:27 1160次阅读
    <b class='flag-5'>嵌入式</b>Qt-<b class='flag-5'>表格</b>使用测试

    excel导出功能如何实现?

    最近我做过一个MySQL`百万级别`数据的`excel`导出功能,已经正常上线使用了。 这个功能挺有意思的,里面需要注意的细节还真不少,现在拿出来跟大家分享一下,希望对你会有所帮助。 原始需求:用户在`UI界面`上点
    的头像 发表于 05-11 18:17 982次阅读
    <b class='flag-5'>excel</b><b class='flag-5'>导出</b>功能如何实现?