当前位置: 首页 > news >正文

Qt之第三方库‌QXlsx使用(三)

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第三方控件开源库及特点和用途简要描述如下:

  1. ‌‌QXlsx是一个用于读写Microsoft Excel文件的库,使Qt应用程序能够处理Excel数据;

  2. QCustomPlot‌是一个绘制图表、曲线、统计图等的库,具有灵活的定制化和丰富的功能;
  3. QHotkey是一个简单易用的库,用于在Qt应用程序中注册全局快捷键;

  4. QtSerialPort是Qt官方提供的库,用于串口通信,支持跨平台使用;
  5. QsLog是一个轻量级的日志库,用于在Qt应用程序中记录和输出日志信息;

  6. ‌‌QJson‌是用于JSON数据解析和生成的库,方便处理JSON格式的数据;

  7. 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文库。


http://www.mrgr.cn/news/79476.html

相关文章:

  • uniapp小程序 slot中无法传递外部参数的解决方案
  • IDEA 2024 版本配置热部署
  • leetcode 1409.查询带键的排列
  • 爬虫基础知识点
  • EXCEL数据清洗的几个功能总结备忘
  • React18 +ts 路由写法
  • shell脚本实战案例
  • UE_C++ —— 数据类型
  • 【动手学电机驱动】STM32-MBD(1)安装 STM32 硬件支持包
  • 使用IntelliJ IDEA开发Gradle插件并发布到本地
  • openharmony5.0版本源码一二级目录概览
  • 【C++游戏程序】easyX图形库还原游戏《贪吃蛇大作战》(三)
  • Scala-隐式转换
  • “切片赋值”创建列表批量操作“新”方法(Python)
  • JDK17 CompletableFuture
  • shell自动显示当前git的branch
  • [机器学习] 监督学习之线性回归与逻辑回归
  • C++ 完美转发和左值右值
  • 利用高德地图API,如何在PHP与vue3中实现地图缩放功能
  • UE5.5 Geometry库平面切割原理分析
  • Vue3+Vite+ElementPlus 构建 笔记
  • 深入理解 Spring MVC 中的 @RequestBody 注解
  • AI职位对项目经验有哪些具体要求?
  • 【力扣】647.回文子串
  • 【论文相关】期刊/会议 信息检索——IEEE各期刊投稿要求(待完善)
  • leetcode399:除法求值