QXlsx(访问Excel)

news2024/11/16 7:36:34

再Qt中已经有了QAxObject来访问Excel,但访问的是微软的com,只能访问正版的Excl中的 .xls//xlsx ,而且使用起来及其不方便(本人亲测)。

在这里使用QXlsx,能更简单的访问Excel数据,但QXlsx这个类并没有在Qt Creator中,所以需要自己导入。

QXlsx的配置链接(亲测有用):

Qt之QXlsx的使用——完整篇_51CTO博客_qt qxlsx

配置的方式有两种:

第一种:直接在你的编译器上安装Xlsx(需要安装Perl,需要下载QtXlsx源代码)

安装完后在文件中需要添加:

pro文件中添加:

QT +=xlsx

添加头文件:

 #include <QtXlsx/QtXlsx>

创建一个项目:

1.pro文件添加:

2. 添加头文件:

3.构造函数中添加内容:

 3.运行之后打开项目文件:

4.打开该文件:

第二种方式:

直接在项目中添加源代码(只需要下载QtXlsx源代码

1.在项目中创建一个文件夹(存放源代码)

 2.把下载到的QtXlsx源代码复制到该文件

源代码文件的 src文件,复制该文件

 粘贴到项目文件下的Qt_xlsx:

 3.在pro文件中引入源代码:

 具体的解释为:

./Qt_xlsx/src/xlsx/qtxlsx.pri

  •  当前项目下的Qt_xlsx 下的src/xlsx/qtxlsx.pri
  • Qt_xlsx 是我们创建的文件名,后面的就不需要修改

 4.点击左下方的构建,然后在文件中会显示添加的文件:

 

 5.需要添加头文件:

#include"xlsxdocument.h"

6.在构造函数中添加以下代码:

    QXlsx::Document xlsx;
    xlsx.write("A1", "Hello xlsx!");
    xlsx.saveAs("Test.xlsx");

6.运行后打开项目运行文件:

以上就是在Qt Creator中如何添加 Qt xlsx。 

Qt xlsx的具体用法:

Qt xlsx的文档:Qt XLSX |QtXlsx 0.3 (debao.me)

在这里具体介绍一下Excel中的一些名词:

Workbook(工作簿):打开一个Excel后,Excel中的数据会形成工作簿

工作簿中可能会含有多个表

Worksheet(工作表) :获取工作簿中的一个工作表

 Cell(单元格):工作表中的一格

 Format(格式):单元格中可以设置格式

Document(文档类)

用来处理Excel文件中的内容

常用的函数:

QXlsx::Document  xlsx创建一个对象
QXlsx::Document  xlsx(QString)创建并打开指定路径的Excel
Cell::Document::cellAt(int row,int col)返回指定单元格,如果指定位置没有单元格,则该函数返回 0。
addSheet(name,type)添加一个新表name,格式为type
copySheet(name1,name2)创建name2,复制name1
currentSheet()返回当前的工作表对像
deleteSheet(name)删除name这张表
insertChart()插入图表
insertImage()插入图像
insertSheet(index,name,type)index处插入name表,名程已使用的话返回false
mergeCells()合并单元格
moveSheet()移动工作表
renameSheet(old,new)更换名称

read(x,y)使用坐标

read(A1)使用Excel表的位置

读取表中的数据 

注意:Excel的坐标是从1开始

write(x,y,Data)使用坐标

write(A1,Data)使用Excel表的位置

写入数据到指定位置
save()将当前文档保存到文件系统。如果在构建文档时未指定名称,则将使用默认名称“book1.xlsx”。如果保存成功,则返回 true。
saveAs(path)保存到指定位置
selectSheet(name)指定当前的表为name
setColumnWidth()设置列的宽度
setRowWidget()设置行高
sheetNames()返回全部工作表的名称列表
wookbook()返回工作簿


1.创建一个Qt xlsx对象:

//方法1

QXlsx::Document xlsx;

//方法2

如果要省略QXlsx::

using QXlsx::Document;

Document xlsx;

2.写入和读取Excel数据

 
    QXlsx::Document xlsx("Test.xlsx");//打开该Excel文件
    //写入数据
    for(int i=1;i<10;i++)
    {
        for(int j=1;j<10;j++)
        {
            xlsx.write(i,j,i*j*10);
        }
    }
    //读取数据
    for(int n=1;n<10;n++)
    {
        for(int m=1;m<10;m++)
        {
            qDebug()<<xlsx.read(n,m);

        }
    }
    xlsx.save();//保存文件

 

 输出的数据:

注意存储的数据的类型为QVariant

 

 3.输出工作列表:

 

    QXlsx::Document xlsx("Test.xlsx");//打开该Excel文件
    QStringList list;
    list=xlsx.sheetNames();//获取工作列表
    for(QString &data:list)
    {
        qDebug()<<data;//输出列表
    }
    xlsx.selectSheet(tr("Sheet3"));//设置Sheet3为当前列表
    xlsx.save();//保存文件

 以上就是Qt 对Excel的基本操作。

还有一些功能这里就不列举了:

点击该链接即可查看:Qt Xlsx C++ Classes | QtXlsx 0.3 (debao.me) 

其他的操作可以点击下方链接学习:Qt Xlsx使用教程、Qt操作Excel、Qt生成Excel图表、跨平台不依赖Office_超级大洋葱806的博客-CSDN博客_qtxlsx

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

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

相关文章

《MySQL学习》 MySQL优化器选择如何选择索引

一.优化器的选择逻辑 建表语句 CREATE TABLE t (id int(11) NOT NULL AUTO_INCREMENT,a int(11) DEFAULT NULL,b int(11) DEFAULT NULL,PRIMARY KEY (id),KEY a (a),KEY b (b) ) ENGINEInnoDB;往表中插入10W条数据 delimiter ;; create procedure idata() begindeclare i in…

目标检测三大数据格式VOC,YOLO,COCO的详细介绍

注&#xff1a;本文仅供学习&#xff0c;未经同意请勿转载 说明&#xff1a;该博客来源于xiaobai_Ry:2020年3月笔记 对应的PDF下载链接在&#xff1a;待上传 目录 目标检测常见数据集总结 V0C数据集(Annotation的格式是xmI) A. 数据集包含种类: B. V0C2007和V0C2012的区别…

QT学习记录散件

fromLocal8Bit() qt中fromLocal8Bit()函数可以设置编码。 因为QT默认的编码是unicode&#xff0c;不能显示中文的 而windows默认使用&#xff08;GBK/GB2312/GB18030&#xff09; 所以使用fromLocal8Bit()函数&#xff0c;可以实现从本地字符集GB到Unicode的转换&#xff0c;从…

32-Golang中的map

Golang中的map基本介绍基本语法map声明的举例map使用的方式map的增删改查操作map的增加和更新map的删除map的查找map的遍历map切片基本介绍map排序map的使用细节基本介绍 map是key-value数据结构&#xff0c;又称为字段或者关联数组。类似其它编程语言的集合&#xff0c;在编程…

2023美赛ABCDEF思路汇总

注&#xff1a;以下每个题思路仅是个人所想所做&#xff0c;不代表他人。由于时间仓促完成这么多&#xff0c;难免有不足之处&#xff0c;还请谅解。 文章目录A题第一大问第二大问B题第一问第二问第三问C题第一问第二问第三问第四问D题第一问第二问第三问第四问第五问E题第一问…

#Paper Reading# Language Models are Unsupervised Multitask Learners

论文题目: Language Models are Unsupervised Multitask Learners 论文地址: https://life-extension.github.io/2020/05/27/GPT技术初探/language-models.pdf 论文发表于: OpenAI 2019 论文所属单位: OpenAI 论文大体内容&#xff1a; 本文主要提出了GPT-2&#xff08;Gener…

Visual Studio 2022: 增加对虚幻引擎的支持

自 Visual Studio 2022 发布以来&#xff0c;我们一直专注于为游戏和大型项目开发人员提供一系列生产力和性能改进。今天&#xff0c;我们很高兴与大家分享下一组专门用来提高虚幻引擎开发效率的功能。我们听到并看到了来自你&#xff08;我们的游戏开发人员&#xff09;的大量…

Spring MVC之 一次请求响应的过程

Spring MVC 会创建两个容器&#xff0c;其中创建Root WebApplicationContext 后&#xff0c;调用其refresh()方法会触发刷新事件&#xff0c;完成 Spring IOC 初始化相关工作&#xff0c;会初始化各种 Spring Bean 到当前容器中我们先来了解一个请求是如何被 Spring MVC 处理的…

2023最新文件快递柜系统网站源码 | 匿名口令分享 | 临时文件分享

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 2023最新文件快递柜系统网站源码 | 匿名口令分享 | 临时文件分享 很多时候&#xff0c;我们都想将一些文件或文本传送给别人&#xff0c;或者跨端传递一些信息&#xff0c;但是我们又不…

自抗扰控制ADRC之三种微分跟踪器TD仿真分析

目录 前言 1 全程快速微分器 1.1仿真分析 1.2仿真模型 1.3仿真结果 1.4结论 2 Levant微分器 2.1仿真分析 2.2仿真模型 2.3仿真结果 3.非线性跟踪微分器——韩教授 3.1仿真分析 3.2小结 4.总结 前言 工程上信号的微分是难以得到的&#xff0c;所以本文采用微分器…

重磅 | 小O软件新品【鲸鱼地图】发布

千呼万唤始出来.......&#xff0c;小O系列软件又添新品【鲸鱼地图】&#xff01;&#xff01;&#xff01; 2023年新年伊始&#xff0c;小O就投入到新品研发工作中&#xff0c;秉承“发现地理价值”理念&#xff0c;为用户提供更加好用、易用的地图软件产品&#xff0c;经过春…

【C语言】编程初学者入门训练(完结)

文章目录1. 实践出真知2. 我是大V3. 有容乃大4. 小飞机5. 缩短2进制6. 十六进制转十进制7. printf的返回值8. 成绩输入输出9. 学生基本信息输入输出10. 字符圣诞树11. ASCII码12. 出生日期输入输出13. 按照格式输入并交换输出14. 字符转ASCII码15. 计算表达式的值16. 计算带余除…

Java特性之设计模式【策略模式】

一、策略模式 概述 在策略模式&#xff08;Strategy Pattern&#xff09;中&#xff0c;一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式 在策略模式中&#xff0c;我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略…

Matlab数学建模常用算法及论文插图绘制模板资源合集

最近有很多朋友咨询我关于Matlab论文插图绘制方面的问题。 问了一下&#xff0c;这些朋友中&#xff0c;除了写博士论文的&#xff0c;大部分都是要参加美赛的。 这让我突然想起&#xff0c;自己曾经为了水论文&#xff0c;购买过一批Matlab数学建模的资料。 想了想&#xf…

EMIF转AXI-Lite接口

最近想用DSP对FPGA里的IP进行配置&#xff0c;感觉没有什么特别好的办法。如果能像Zynq一样直接有能够配置外设的AXI-Lite接口就好了。EMIF是DSP的外部存储器访问接口&#xff0c;支持对存储器的同步或异步访问。在我现有的条件下&#xff0c;利用EMIF接口配置FPGA内部的寄存器…

2023河南省第二届职业技能大赛郑州市选拔赛“网络安全”项目比赛样题任务书

2023河南省第二届职业技能大赛郑州市选拔赛“网络安全” 项目比赛样题任务书 一、竞赛时间 共计360分钟。 竞赛任务书内容 2023河南省第二届职业技能大赛郑州市选拔赛“网络安全” 项目比赛样题任务书 A模块基础设施设置/安全加固&#xff08;200分&#xff09; A-1&…

如何安全存储企业文件?

信息时代的到来&#xff0c;企业文件的安全存储越来越被企业管理者看重。常见的企业文件存储是借用第三方工具&#xff0c;如企业网盘&#xff0c;这种方法性价比高&#xff0c;而且也比较安全&#xff0c;被各大企业所喜爱。市面上的企业网盘类工具不胜枚举&#xff0c;该如何…

O(1)调度器:Linux2.6版本的核心算法

上一章学习了O(n)调度器的设计&#xff0c;以及它的核心算法&#xff0c;其主要思路如下&#xff1a; O(n)调度器采用一个Runqueue运行队列来管理所有可运行的进程&#xff0c;在主调度schedule函数中选择一个优先级最高&#xff0c;也就是时间片最大的进程来运行&#xff0c;…

2019蓝桥杯真题完全二叉树的权值 C语言/C++

题目描述 给定一棵包含 N个节点的完全二叉树&#xff0c;树上每个节点都有一个权值&#xff0c;按从 上到下、从左到右的顺序依次是 A_1, A_2, A_N&#xff0c;如下图所示&#xff1a; 现在小明要把相同深度的节点的权值加在一起&#xff0c;他想知道哪个深度的节点 权值之和最…

力扣2241. 设计一个 ATM 机器

力扣上的一个中等难度的题&#xff0c;之所以写一篇博客记录下来&#xff0c;是因为貌似触发了力扣的彩蛋&#xff0c;第一次遇见&#xff0c;感觉挺有意义的。 题目如下&#xff1a; 一个 ATM 机器&#xff0c;存有 5 种面值的钞票&#xff1a;20 &#xff0c;50 &#xff0c…