嵌入式Qt开发—Excel表格数据导出

2023-11-03

有一个嵌入式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: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);
    // 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了。
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌入式Qt开发—Excel表格数据导出 的相关文章

  • 使用 C# 在 Excel 中查找和替换文本

    我想使用 C 在 Excel 中查找并替换一组文本 而且我希望此替换仅发生在第一行中的文本 我已经使用Google并找到了一些付费资源 例如Aspose API Spire Xls等 但我正在寻找开源资源或任何其他有效的方法来实现这一目标
  • 在 Python 中绘制 Excel 中的数据

    我必须从 Excel 文件中读取和绘制数据的代码是这样的 import pandas as pd import matplotlib pyplot as plt excel file file1 xlsx file1 pd read exc
  • 使用 PHP 代码和 HTML 表单将 Excel (.csv) 导入 MySQL

    我知道还有其他类似的帖子 但每个人都建议直接在 PHPMyAdmin 中将其导入 MySQL 这工作完美 但我需要通过 HTML 表单导入 PHP 到 MySQL 我想要一个收集文件的 HTML 表单 然后将该文件传递给 PHP 脚本 我想
  • 如何使用样式表删除 QWizard 中的水平线?

    我正在研究一个样式表QWizard我想删除按钮上方的水平线 我已经发布了一个最小的例子here https stackoverflow com q 52538669 8570451 这个问题是由scopchanov从最小的例子中解决的 但是
  • 使用 QPrinter 打印第 x 页(共 y 页)

    我使用 qt 从 html 代码生成 pdf 文件 QTextDocument document new QTextDocument document gt setHtml htmlContent QPrinter printer QPri
  • 用于导出到 CSV/Excel 的数据 URI(无服务器端请求):浏览器支持/限制?

    以下问题 Javascript 或 Flash 导出至 CSV Excel https stackoverflow com questions 8150516 javascript or flash export to csv excel
  • 使用信号和槽更新指针

    我对 Qt 很陌生 请帮我解决这个问题 我正在使用线程在后台执行密集操作 同时我想更新 UI 所以我使用 SIGNALS 和 SLOTS 为了更新 UI 我发出一个信号并更新 UI 让我们考虑下面的示例代码 struct sample QS
  • QGraphicsView 在完整布局中未最大化

    I have following GUI having four QGraphicView objects 正如您在每个视图下看到的那样 它有四个工具按钮 为了最大化视图 我连接了工具按钮的信号来隐藏其他三个视图的插槽 并将大小策略设置为扩
  • 渲染具有透明度的纹理时,OpenGL 不需要的像素

    我已经为这个问题苦苦挣扎了一段时间了 当我使用 OpenGL 渲染 2D 纹理 在无透明度和部分透明度之间的过渡上具有透明度值 时 我得到了一些烦人的灰色像素 我认为这是像素值插值的产物 关于如何改进这一点有什么想法吗 I m attach
  • 自动计算Excel VBA UDF与单元格属性相关

    我编写了一个 UDF 来计算特定颜色和特定线条样式的单元格 我发布了整个函数 Function CountTime rData As Range cellRefColor As Range As Variant Dim indRefColo
  • 更改显示的 DPI 缩放大小使 Qt 应用程序的字体大小渲染得更大

    我使用 Qt 创建了一些 GUI 应用程序 我的 GUI 应用程序包含按钮和单选按钮等控件 当我运行应用程序时 按钮内的按钮和字体看起来正常 当我将显示器的 DPI 缩放大小从 100 更改为 150 或 200 时 无论分辨率如何 控件的
  • 在 VBA 中从范围创建数组

    我遇到了一个看似基本的问题 但找不到任何资源来解决它 简而言之 我只想将一系列单元格 所有一列 的内容加载到数组中 我能够通过以下方式完成此任务 DirArray Array Range A1 Range A2 但由于某种原因 我无法以这种
  • Qt ObjectName() 必须是唯一的吗?

    如标题所示的简单问题 如果我打电话setObjectName 在一个对象上 它是否必须是唯一的 或者只是因为约定而推荐 我已经子类化了QLabel 并希望自动为创建的对象命名 如果这是一个坏主意 我会找到一些设置随机唯一名称的方法 我实际上
  • 在 Qt 中用像素图画笔画一条线?

    一段时间以来 我正在使用 Qt C 开发一个简单的绘图和绘画应用程序 目前我正在使用 QPainter drawLine 进行绘制 并且工作正常 我想做的是用像素图画笔绘图 这是我可以做到的 我可以使用 QPainterPath 和 QPa
  • PyQt QFileDialog exec_ 很慢

    我正在使用自定义QFileDialog因为我想选择多个目录 但是exec 功能非常慢 我不明白为什么 我正在使用最新版本的 PyQt 代码片段 from PyQt4 import QtGui QtCore QtNetwork uic cla
  • 从单元格复制时省略引号

    Problem 当从程序外部的 Excel 复制单元格时 会自动添加双引号 Details 我在 Windows 7 计算机上使用 Excel 2007 如果我有一个具有以下公式的单元格 1 CHAR 9 SOME NOTES FOR LI
  • 错误:命名空间“std”中没有名为“enable_if_t”的模板;您的意思是“enable_if”吗?

    我正在 macOS 10 13 6 上使用 Qt 5 11 3 进行编译 Qt使用的clang版本是 Applications Xcode app Contents Developer Toolchains XcodeDefault xct
  • 如何使用VBA删除工作簿中的空白工作表?

    Sub delete Dim sh As Worksheet wb As String c As Range wb InputBox work book name Set sh Workbooks wb Sheets For Each Sh
  • 在 Excel 中打印 MATLAB 图窗并调整其大小

    我在 MATLAB 中有两个带有手柄的图形hFig1 and hFig2 我想将它们打印到 Excel 中的特定单元格 单元格 E3 和 I3 并将它们重新调整为 2 英寸 x 3 英寸 我尝试过使用 AddPictures对象处理程序和使
  • Excel VBA 通过简单除法引发溢出错误

    Excel 2013 VBA 这段代码 Sub test On Error GoTo Err Dim p As Double p 362 100 2005 Exit Sub Err If Err Description lt gt And

随机推荐

  • Shell—变量、字符串和数组

    本文主要讲解Shell变量 字符串和数组的相关知识 一 Shell变量 1 变量的定义 运行shell时 会同时存在三种变量 1 局部变量 局部变量在脚本或命令中定义 仅在当前shell实例中有效 其他shell启动的程序不能访问局部变量
  • 区块链+教育:区块链是底层技术,教育才是本质!

    建国君民 教育为先 国愚是智可以强国 国智则力可以强人 依教建国 以智强国 是中国古代先贤就教育强国思想的重要体现 每次的教育改革也牵动着无数人的心 也有很多人关心未来的教育会走向哪里 百年大计 教育为先 随着人们对教育行业的关注度逐渐提升
  • HECO使用docker部署单节点的开发网

    文章目录 一 编写说明 1 1 文档说明 1 2 配置信息 1 3 部署文档信息 二 heco开发网镜像生成 三 heco主链容器生成 3 1 配置文件编写 3 2 预先创建一个账户地址 3 3 创建genesis json 3 4 初始化
  • Android加密 看雪,Android加密与解密入门两题

    写在最前面 本次题目来自看雪2w班9月题 密码学一直是安全的基础 Android安全也不例外 这次9月份的题分别从java层和C层考察了密码学中常用的对称加密 hash函数以及一些基础的编码 但是不是单纯的算法分析题 可以说是很好的练习题了
  • ResNet网络加入CBAM注意力机制

    首先定义resnet cbam py 如图 import torch import torch nn as nn import math import torch utils model zoo as model zoo all ResNe
  • python中retry的用法

    异常重试retry retry是一个用于错误处理的模块 功能类似try except 但更加快捷方便 retry模块中retry 的基本用法 retry 的功能是在其装饰的函数运行报错后重新运行该函数 retry 有几个主要参数 excep
  • Vert.x:一个简单的Tcp客户端和服务端demo

    1 声明 当前内容主要为记录和学习使用Vert x创建Tcp服务并实现通信的demo 当前内容参考官方文档 2 Server Demo import io vertx core AbstractVerticle import io vert
  • C++day3(设计一个Per类,类中包含私有成员:姓名、年龄...)

    1 设计一个Per类 类中包含私有成员 姓名 年龄 指针成员身高 体重 再设计一个Stu类 类中包含私有成员 成绩 Per类对象 p1 设计这两个类的构造函数 析构函数和拷贝构造函数 include
  • 力扣(LeetCode)257. 二叉树的所有路径

    给定一个二叉树 返回所有从根节点到叶子节点的路径 说明 叶子节点是指没有子节点的节点 示例 输入 1 2 3 5 输出 1 gt 2 gt 5 1 gt 3 解释 所有根节点到叶子节点的路径为 1 gt 2 gt 5 1 gt 3 通过次数
  • L1-003 个位数统计

    给定一个 k 位整数 N dk 1 10k 1 d1 101 d0 0 di 9 i 0 k 1 dk 1 gt 0 请编写程序统计每种不同的个位数字出现的次数 例如 给定 N 100311 则有 2 个 0 3 个 1 和 1 个 3 输
  • win 10升级后不能访问服务器文件夹,Win10系统文件夹无法访问拒绝访问怎么办?...

    不知道大家是否遇到过 访问某些文件夹的时候 出现提示 无法访问拒绝访问该文件夹 那么 Win10系统文件夹无法访问拒绝访问怎么办呢 下面 我们就一起往下看看Win10系统文件夹无法访问拒绝访问的解决方法 方法 步骤 1 右键点击无权访问的文
  • layui向body添加html_layui添加动态菜单与选项卡 AJAX请求的例子

    如下所示 HTMLLayui index js layui use element function function checkLastItem arr i return arr length i 1 function getAhtml
  • Jenkins学习篇之在Jenkins上配置kubernetes

    Jenkins是现在比较成熟的CICD管理平台 官方提供了丰富的插件用来配置CICD流程 这篇博客 记录一下在Jenkins上配置kubernetes的过程 希望对你有帮助 一 安装kubernetes插件 1 在插件管理里面搜索kuber
  • Spring Cloud中间件

    一 Nacos Ribbon Nacos介绍请参考 什么是 Nacos 下载 https github com alibaba nacos releases page 3 安装方法 Nacos 快速开始 运行nacos 切换到bin目录 在
  • 计算机基础知识及其能力调查问卷,大学新生计算机能力调查和分析.doc

    大学新生计算机能力调查和分析 大学新生计算机能力调查和分析 摘 要 本文在分析我院来自不同地区大学新生计算机能力存在较大差异的基础上 介绍了新生计算机能力调查问卷的设计方法 对我院2008级新生的调查结果作了具体分析 并提出了相应教改措施
  • 数据结构与算法分析 C语言描述(原书第2版)电子书pdf下载

    数据结构与算法分析 C语言描述 原书第2版 下载链接 https pan baidu com s 1VrsrvtCujFHbseuJjXJACA 提取码获取方式 关注下面微信公众号 回复关键字 1136
  • TypeScript入门-9.函数箭头表达式

    箭头表达式是function 匿名函数的简写 旨在解决javascript的this指向问题 写函数的时候也更简洁 函数一个参数的时候小括号可以不 写 写在一行后面的大括号可以不写 return也可以不写 如果写了大括号就必须加上retur
  • 【华为OD机试真题2023 JS】寻找核酸检测点

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 寻找核酸检测点 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 张三要去外地出差 需要做核酸 需要在指定时间点前做完核酸 请帮他找到满足条件的核酸检测点 1 给出
  • jenkinsci/blueocean:latest

    Jenkins maven配置 MVN3 mvn clean package Dmaven test skip true Dmaven javadoc skip true Javadoc 用于描述类或者方法的作用 Javadock可以写在类
  • 嵌入式Qt开发—Excel表格数据导出

    有一个嵌入式Excel表格数据导出的需求 应用软件运行于嵌入式Linux平台上 在设备运行过程中 存储了许多数据 这些数据想以表格的形式导出 考虑到Windows平台的普遍性 需要将数据以excel表格形式导出 故选择了一个开源库 QtXl