QT 中使用QXlsx 读写文件

news2024/11/15 19:33:47

PC 工具中需要操作xlsx格式的数据,前面使用的是QAxObject,需要一些设置,还要安装office的控件或者wps的控件,在一些电脑上面有的时候还会有异常,后面发现一个好像的开源库QXls,发现读写的速度比以前快,而且只需要简单的添加文件到工程中就可以。

Qxlsx 源码的地址:https://github.com/QtExcel/QXlsx

下载下来之后我们只是需要其中的一个文件夹:

将QXlsx 文件夹copy到你的工程目录下面

 

然后添加QXlsx.pri 到你工程的pro文件中

include($$PWD/QXlsx/QXlsx.pri)

 下面给出一个简单的例子

头文件中定义一个

  QXlsx::Document* m_xlsx = nullptr;

    if(!m_xlsx)
    {
        m_xlsx = new QXlsx::Document("./xxxxx.xlsx", this);
    }

    if(m_xlsx->load())  // 判断文件是否打开成功(也可以使用isLoadPackage)
     {
         qDebug() << "excel success";
         QXlsx::Worksheet* sheet =(QXlsx::Worksheet*) m_xlsx->sheet("SOAService_Deployment");
         if (!sheet)
         {
                qDebug() << "Sheet 'SOAService_Deployment' not found";
                return ;
         }
         else
         {
             int row=sheet->dimension().lastRow();

             for(int i=3;i<=row;i++)
             {
                 std::shared_ptr<QXlsx::Cell> cell = sheet->cellAt(i, 19);
                 if (cell)
                 {
                      QVariant value = cell->readValue();
                      model->appendRow(new QStandardItem(value.toString()));
                      qDebug() << "Row:" << i << "Column:" << 19 << "Value:" << value.toString();
                 }
                 cell = sheet->cellAt(i, 20);
                 QVariant value = cell->readValue();
                 qDebug() << "Row:" << i << "Column:" << 20 << "Value:" << value.toString();
             }
         }
     }
     else
     {
        qDebug()<<"fail";
     }

    if (m_xlsx)
    {

        delete m_xlsx;

        m_xlsx=nullptr;
    }

然后就可以把xlsx文件中的内容读取出来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2130435.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

USB摄像头视频流转RTSP流

一、VLC查看USB摄像头视频流原理&#xff1a; USB摄像头的工作原理与VLC播放其他视频文件类似&#xff0c;主要区别在于视频流的来源是实时捕获的&#xff0c;而不是预先录制的文件。如果使用VLC将USB摄像头的视频流作为RTSP服务器广播&#xff0c;需要进一步配置 二、VLC查看…

QMQ 上云方案

优质博文&#xff1a;IT-BLOG0CN 一、挑战/注意事项 【1】生产者发送消息后&#xff0c;QMQ国内外服务器进行了双向同步&#xff0c;如果消费者国内外都部署了系统&#xff0c;就会导致消息重复消费的问题&#xff1a; 目前封装了共同的SDK重构消费者的代码&#xff0c;生产者…

单片机寄存器相关知识及应用(51单片机)

在前面的STM32中我并没有直接对寄存器进行操作&#xff0c;而是通过固件库直接引用进行各个外设的配置和应用&#xff0c;现在&#xff0c;我开始进行寄存器的学习&#xff08;51单片机&#xff09;。 我们先简单看一下80C51/52的微控制头文件 <REG52.h> 一、字节寄存…

Android 提高第一次开机速度(取消系统默认手机加密)

Android刷机后第一次开机&#xff0c;系统默认是要手机加密的&#xff0c;有些机器加密就几秒钟&#xff0c;有些机器加密要30多秒甚至更长&#xff0c;严重影响了开机速度。 修改路径&#xff1a; device/qcom/xxxx/fstab_AB_variant.qcom 有一些是这个文件&#xff1a; devic…

补:在Spring Boot 当中使用 Thymeleaf 视图解析器

补&#xff1a;在Spring Boot 当中使用 Thymeleaf 视图解析器 想要在 Spring Boot 当中使用 Thymeleaf 视图&#xff0c;就需要导入相关的 jar 依赖。在 pom.xml 文件中配置 。 <!-- 引入 thymeleaf-start ,项目会自动完成配置&#xff0c;--><dependency>…

MPU6050移植DMP读出三轴角度

先决条件 MPU6050移植完成&#xff0c;能够正确读出加速度和陀螺仪原始数据 DMP移植 官方包代码复制 解压demo&#xff0c;打开motion_driver_6.12\arm\STM32F4_MD6\Projects\eMD6\core\driver&#xff0c;复制路径下的eMPL到自己工程 代码移植 需要修改的有三个文件&am…

GD32/STM32启动过程

GD32/STM32启动过程 文章目录 GD32/STM32启动过程前言一、系统架构二、自举配置三、启动文件四、启动流程总结 前言 本文以STM32F407为例简单介绍其启动过程。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、系统架构 STM32F407的系统架构如图所…

libyuv之linux编译

文章目录 一、下载源码二、编译源码三、注意事项1、银河麒麟系统&#xff08;aarch64&#xff09;&#xff08;1&#xff09;解决 armv8-adotprodi8mm 指令集支持问题&#xff08;2&#xff09;解决 armv9-asve2 指令集支持问题 一、下载源码 到GitHub网站下载https://github.…

【JAVA】Undertow的使用及性能优化,以及Undertow与Tomcat的对比

文章目录 Undertow优势Undertow使用Undertow性能优化线程池配置缓冲区和内存使用连接和请求超时禁用无关的设置编程式配置启用HTTP/2 Undertow与Tomcat的对比 更多相关内容可查看 当你进行Tomcat调优发现在怎么调都无法满足需求的时候&#xff0c;Undertow容器在性能和内存上都…

盘点2024年大家都在用的短视频剪辑工具

你现在休息的时间是不是都靠短视频来消遣&#xff1f;看着看着你就会发现短视频制作好像我也可以了吧&#xff1f;这次我就介绍一些简单好操作的短视频剪辑工具。 1.FOXIT视频剪辑 连接直达>>https://www.pdf365.cn/foxitclip/ 短视频剪辑其实也不难&#xff0c;只需…

MySql-表的内外连接

文章目录 前言一、内连接二、外连接1.左外连接2.右外连接 前言 表的内外连接跟我们上节课讲的笛卡尔积很相似。 一、内连接 格式&#xff1a;select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件&#xff1b; 例如&#xff1a;显示SMITH的名字和部门名称 二、外…

RB-SQL:利用检索LLM框架处理大型数据库和复杂多表查询的NL2SQL

NL2SQL的任务是将自然语言问题转换为SQL查询&#xff0c;以便从数据库中获取答案。现有LLM来指导SQL生成的方法在处理大型数据库和复杂多表查询时存在挑战&#xff0c;尤其是在处理冗余信息和提高提示工程效率方面。 (a) 利用大型语言模型&#xff08;LLM&#xff09;解决文本…

ctfshow-web入门-sql注入(web249-web253)nosql 注入

目录 1、web249 2、web250 3、web251 4、wen252 5、web253 1、web249 开始nosql,flag在flag中 $user $memcache->get($id); 使用 Memcache 类的 get 方法从缓存中获取数据&#xff0c;$id 是传入的键&#xff0c;用于从缓存中获取与该键对应的值&#xff0c;结果存储…

明基相机sd卡格式化还能恢复数据吗?可以这样操作

随着数字摄影的普及&#xff0c;相机SD卡已成为我们记录生活点滴的重要载体。然而&#xff0c;不小心将SD卡格式化&#xff0c;导致珍贵照片和视频瞬间消失&#xff0c;无疑是摄影爱好者的一大噩梦。面对这样的突发情况&#xff0c;许多朋友可能会感到无助与绝望。但实际上&…

【计算机组成原理】概述+数制与编码

目录 计算机组成原理概述计算机基本组成计算机系统的层次结构计算机性能指标 数制与编码进位计数制及其相互转换数据的编码与表示校验码 计算机组成原理概述 计算机基本组成 运算器、控制器、存储器、输入输出设备 运算器&#xff1a;完成数据的暂存、变换、算术运算和逻辑…

OpenCV结构分析与形状描述符(23)确定一个点是否位于多边形内的函数pointPolygonTest()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 进行点在轮廓内的测试。 该函数确定点是在轮廓内、轮廓外&#xff0c;还是位于一条边上&#xff08;或与顶点重合&#xff09;。它返回正值&…

【可变参模板】基类参数包的展开

一、基类参数包的展开 1.1基类参数包的展开 C C C是一个支持多继承的语言&#xff0c;因此继承的类也可以是一个基类的参数包 注意继承的语法是 p u b l i c : c l a s s . . . public: class ... public:class...&#xff0c;需要补充 . . . ... ...作为基类参数包的标志。…

Linux 驱动编写框架 并编译导入开发板

向内核新加文件&#xff1a;例如 demo1.c 1. 创建并编辑新的文件 #include <linux/init.h> #include <linux/kernel.h> #include <linux/types.h> #include <linux/fs.h> #include <linux/module.h> #include <linux/kdev_t.h> #include …

Qt控制开发板的LED

Qt控制开发板的LED 使用开发板的IO接口进行控制是嵌入式中非常重要的一点&#xff0c;就像冯诺依曼原理说的一样&#xff0c;一个计算机最起码要有输入输出吧&#xff0c;我们有了信息的接收和处理&#xff0c;那我们就要有输出。 我们在开发板上一般都是使用开发板的GPIO接口…

vue3使用provide和inject传递异步请求数据子组件接收不到

前言 一般接口返回的格式是数组或对象&#xff0c;使用reactive定义共享变量 父组件传递 const data reactive([])// 使用settimout模拟接口返回 setTimeout(() > {// 将接口返回的数据赋值给变量Object.assign(data, [{ id: 10000 }]) }, 3000);provide(shareData, dat…