Qt之第三方库QXlsx使用(三)
目录
前言
一、Qt开源库
二、QXlsx
1.QXlsx介绍
2.QXlsx下载
3.QXlsx移植
4.修改项目文件.pro
三、使用技巧
1.添加头文件
2.写入数据
3.读出数据
总结
前言
Qt第三方控件库是指非Qt官方提供的、用于扩展Qt应用程序功能的控件集合。这些控件库可以提供额外的用户界面元素、功能组件或者优化现有Qt控件的性能和外观。一些常用的Qt第三方控件库有QCustomPlot、QXlsx、QHotkey、QtSerialPort、QsLog等等很多,它们都是开源的、免费的,且基于Qt框架编写,今天本文主要讲解QXlsx第三方控件开源库。
一、Qt开源库
Qt开源库是指基于Qt框架的一系列开源库,这些库提供了丰富的功能,帮助开发者在Qt应用程序中实现各种功能需求。Qt是一个跨平台的C++图形用户界面应用程序开发框架,广泛用于开发GUI程序,也可用于开发非GUI程序,如控制台工具和服务器。
常用的Qt第三方控件开源库及特点和用途简要描述如下:
-
QXlsx是一个用于读写Microsoft Excel文件的库,使Qt应用程序能够处理Excel数据;
- QCustomPlot是一个绘制图表、曲线、统计图等的库,具有灵活的定制化和丰富的功能;
-
QHotkey是一个简单易用的库,用于在Qt应用程序中注册全局快捷键;
- QtSerialPort是Qt官方提供的库,用于串口通信,支持跨平台使用;
-
QsLog是一个轻量级的日志库,用于在Qt应用程序中记录和输出日志信息;
-
QJson是用于JSON数据解析和生成的库,方便处理JSON格式的数据;
- QwtPlot3D是绘制三维图形的库,支持曲面图、线框图、散点图等。
二、QXlsx
先提供第三方开源库QXlsx库的下载网址:GitHub - QtExcel/QXlsx下载地址
1.QXlsx介绍
由于Qt无自带的库处理Excel文件,亦使用免费的开源第三方库QXlsx,它提供了一组简单易用的API,允许开发者读取、写入和修改Excel工作簿(.xlsx文件格式),并且完全独立于Excel应用程序本身,不需要安装Microsoft Excel即可操作Excel文件。
2.QXlsx下载
打开上面的QXlsx下载地址,如下所示。在Code处点击Download ZIP,下载压缩文件;也可以使用git clone https://github.com/QtExcel/QXlsx.git 将项目下载到本地.

下载完后,并解压该文件,如下所示。

打开该文件夹,可以看到里面有若干文件夹,主要时一些QXlsx的使用例程,和github的配置文件,我们主要关心QXlsx的源文件,在图中QXlsx文件夹里面,将该文件夹复制到你的Qt工程项目中,是此行的目的。

3.QXlsx移植
将上面QXlsx文件夹复制到你的Qt工程项目路径下面,然后将该文件QXlsx添加到你的Qt项目中。
首先,将QXlsx复制到项目路径下面,如下所示。

然后,打开QXlsx文件夹,删除cmake文件夹、CMakeLists.txt、QXlsx.pro文件,保留如下文件。

4.修改项目文件.pro
打开你的Qt项目,点击打开你的pro文件,在其中添加如下配置信息,代码示例:
QXLSX_PARENTPATH=$$PWD/QXlsx/
QXLSX_HEADERPATH=$$PWD/QXlsx/header/
QXLSX_SOURCEPATH=$$PWD/QXlsx/source/
include($$PWD/QXlsx/QXlsx.pri)
添加完成后,会自动将QXlxs文件夹显示在项目中。

至此,已经将QXlxs在Qt中运用的开发环境已经搭建完毕,可以在Qt项目中使用QXlsx处理execle文件了。下面在讲解一些QXlxs的使用技巧,也可以参考下官方示例上的使用方式。
三、使用技巧
1.添加头文件
进行对数据写入/读取操作时,别忘了,在文件上方添加QXlxs头文件,如下所示:
#include "xlsxdocument.h"
2.写入数据
在UI界面上设置按钮,名称写入数据,点击可实现,创建一个Execl文件,向其写入数据数据,示意图:

代码示例:
void MainWindow::on_pushButton_clicked()
{QXlsx::Document xlsx;xlsx.write("A1", "时间(ms)");xlsx.write("B1", "帧序号");xlsx.write("C1", "气压(kPa)");xlsx.write("D1", "倾角(°)");xlsx.write("E1", "温度(℃)");xlsx.write("F1", "速度(m/s)");double d = 0.111111;for (int i=2; i<100; i++) {xlsx.write(i, 1, 100);xlsx.write(i, 2, 100);xlsx.write(i, 3, QString::number(d, 'f', 3));xlsx.write(i, 4, QString::number(d, 'f', 3));xlsx.write(i, 5, QString::number(d, 'f', 3));xlsx.write(i, 6, QString::number(d, 'f', 3));}QString saveFilePath = qApp->applicationDirPath() + "/savefile.xlsx";xlsx.saveAs(saveFilePath);
}
3.读出数据
在UI界面上设置按钮,名称读取数据,点击可实现,读取一个Execl文件,将其数据存入QStringList变量中,示意图:

代码如下(示例):
void MainWindow::on_pushButton_2_clicked()
{QString sourcFilePath = QFileDialog::getOpenFileName(nullptr,"请选择待处理的数据",qApp->applicationDirPath()+"/","*.xlsx;;all(*)");if(sourcFilePath.isEmpty()){QMessageBox mesg;mesg.critical(this,tr("Error"),tr("打开文件路径发生错误!"));return;}QXlsx::Document xlsx(sourcFilePath);QXlsx::Worksheet *workSheet = xlsx.currentWorksheet();int xlsxrows = workSheet->dimension().rowCount();//读取文件行数int xlsxcloums = workSheet->dimension().columnCount();//读取文件列数QStringList msgs;for (int i=1;i<=xlsxrows;i++){for (int j=1;j<=xlsxcloums;j++){msgs.append(workSheet->cellAt(i, j)->value().toString());}}
}
总结
QXlsx库里面还有许多功能,更为详细可参考官方给出的示例工程,在上述讲解中,你下载的文件包中。
博文中相应的工程代码Qt-Case.zip 利用Qt开发软件进行编的例程,为博文提供案例-CSDN文库。
相关文章:
Qt之第三方库QXlsx使用(三)
Qt开发 系列文章 - QXlsx(三) 目录 前言 一、Qt开源库 二、QXlsx 1.QXlsx介绍 2.QXlsx下载 3.QXlsx移植 4.修改项目文件.pro 三、使用技巧 1.添加头文件 2.写入数据 3.读出数据 总结 前言 Qt第三方控件库是指非Qt官方提供的、用于扩展Qt应用…...
Python通过global实现多文件共享全局参数,方法
Python通过global实现多文件共享全局参数 global关键字,全局变量 基础用法 这种用法,不能在其他的py文件中使用, x 6 def func():global x #定义外部的xx 10 func() print (x) #输出10共享参数 新建glo.py文件(全局变量文件)…...
DevOps工程技术价值流:项目构建工具的选择与实践
在快速迭代的软件工程领域,项目构建工具扮演着举足轻重的角色。它们不仅自动化了构建、测试、打包和部署等关键环节,还显著提升了开发效率和质量。本文将深入探讨后端常用的Maven和Gradle,以及前端不可或缺的NPM,并重点对比Maven与…...
【数据库】复习
数据库期中复习——概念填空_在修改数据结构时,为了保证数据库的数据独立性-CSDN博客 选择题 关系数据理论-数据库习题_数据库关系理论考题-CSDN博客 关系、关系模式、关系模型区别和联系 关系:元组的集合,一张表 关系模式:关系的描述 R(…...
CorsConfig前后端数据跨域连接,IDEA右侧Maven窗口消失
前后端数据跨域连接(分页查询并显示) 一、后端添加分页查询 分页查询核心就是:每页需要显示多少条记录(pageSize),当前查看第几页(pageNum);MySQL提供了分页函数limit m,n select * from table limit (pageNum-1)*pageSize, pa…...
Python微博动态爬虫
本文是刘金路的《语言数据获取与分析基础》第十章的扩展,详细解释了如何利用Python进行微博爬虫,爬虫内容包括微博指定帖子的一级评论、评论时间、用户名、id、地区、点赞数。 整个过程十分明了,就是用户利用代码模拟Ajax请求,发…...
【设计模式】单例模式 在java中的应用
文章目录 引言什么是单例模式单例模式的应用场景单例模式的优缺点优点缺点 单例模式的基本实现饿汉式单例模式懒汉式单例模式双重检查锁定静态内部类枚举单例 单例模式的线程安全问题多线程环境下的单例模式线程安全的实现方式1. **懒汉式单例模式(线程不安全&#…...
burp suite 8
声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&a…...
为什么在Java中super与this不能共存于子类构造器中,其中this起什么作用
在 Java 中,super 和 this 是两个关键字,它们在子类的构造器中有特定的用途和限制。 super 关键字: super 用于从父类(超类)访问成员(属性和方法)或者调用父类的构造方法。 在子类的构造器中&…...
Hypothesis:高效的 Python 测试工具
简介:Hypothesis 是一个强大的 Python 测试库,旨在自动生成各种测试案例,以帮助开发者发现潜在的边界问题和隐藏的错误。通过对输入数据进行智能化的探索,Hypothesis 能够为测试提供更全面的覆盖,避免遗漏一些极端或不…...
Terminus Calculator 计算原理分享
在《使命召唤:黑色行动 6》僵尸模式中,Terminus 关卡的研究办公室里有一个复杂的数学谜题需要解决。为了获得多相共振器,玩家需要计算出三个数字并输入电脑。虽然可以花费 5000 精华来获得答案,但使用 Terminus Calculator 可以更…...
Wwise 使用MIDI文件、采样音频
第一种:当采样音频只有一个文件的时候 1.拖入MIDI文件到Interactive Music Hierarchy层级 2.拖入采样音频到Actor-Mixer Hierarchy层级 3.勾选MIDI显示出面板,设置Root Note与采样音频音高相同,这里是C#5 4.播放测试,成功&…...
在CentOS上无Parallel时并发上传.wav文件的Shell脚本解决方案
在CentOS上无Parallel时并发上传.wav文件的Shell脚本解决方案 背景概述解决方案脚本实现脚本说明使用指南注意事项在CentOS操作系统环境中,若需并发上传特定目录下的.wav文件至HTTP服务器,而系统未安装GNU parallel工具,我们可通过其他方法实现此需求。本文将介绍一种利用Sh…...
【RocketMQ 源码分析(一)】设计理念与源码阅读技巧
RocketMQ 的设计理念与源码阅读技巧 一、设计理念二、源码设计三、源码阅读技巧 一直想仔细仔细看看这个 RocketMQ 的源码,学学它的设计思想和编码风格,没准在以后自己在设计和编码的时候有思考的方向。这是专栏的第一篇 —— 介绍下 RocketMQ 的一些设计…...
独立ip服务器有什么优点?
网站的性能和安全性直接影响到用户体验和业务发,独立IP服务器作为一种主流的托管方式,因其独特的优势而受到许多企业和个人站长的青睐。与共享IP相比,独立IP服务器到底有哪些优点呢? 使用独立IP的用户不必担心与其他网站共享同一…...
如何使用Python库连接Redis
1、redis-py 库封装一个 Redis 工具类可以帮助我们简化 Redis 的操作并提高代码的复用性和可维护性。 安装redis pip install redisimport redis import logginglogging.basicConfig(levellogging.INFO) logger logging.getLogger(__name__)class RedisUtils:def __init__(s…...
Vant UI +Golang(gin) 上传文件
前端基本用法:点击查看 实现代码: const afterRead (file) > {console.log(file);//set content-type to multipart/form-dataconst formData new FormData();formData.append("file", file.file);request.POST("/api/v1/users/up…...
【Unity高级】如何实现粒子系统的间歇式喷射
先看下要最终实现的效果: 代码如下: using UnityEngine; using System.Collections;public class ParticleBurstController : MonoBehaviour {private ParticleSystem _particleSystem; // 获取粒子系统public float burstDuration 2f; // 每次…...
通过linux命令获取自选股票价格及大盘涨跌幅
技术发展与数据获取需求 互联网与金融数据融合:随着互联网的普及和金融市场的数字化发展,金融数据的获取和分析变得更加便捷和重要。投资者希望能够及时、准确地获取股票价格和市场指数等信息,以便做出合理的投资决策。Linux 作为一种强大的操作系统,为数据获取和处理提供…...
透彻理解并解决Mockito模拟框架的单元测试无法运行的问题
本篇的实例基于Maven IDE (VS Code) 运行 在VS Code 运行的时候, 不需要在pom.xml 中添加任何插件就可以在测试类中看到如下的绿色按钮,单击就可以运行使用Mockito 注解 ExtendWith(MockitoExtension.class) 或是 Mockito 代码方式的测试。 不使用注…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...
