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 代码方式的测试。 不使用注…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...
