QXlsx Qt操作excel(1)
QXlsx 是一个用于处理Excel文件的开源C++库。它允许你在你的C++应用程序中读取和写入Microsoft Excel文件(.xlsx格式)。该库支持多种操作,包括创建新的工作簿、读取和写入单元格数据、格式化单元格、以及其他与Excel文件相关的功能。
关于QXlsx的下载、安装、包含到项目中,源代码中如何引用,请看上一篇《https://blog.csdn.net/zhouhui1982/article/details/136021940》介绍。
本章节将详细介绍如何使用QXlsx创建新的工作簿、写入单元格数据、合并单元格、格式化单元格、设置单元格样式等操作。


引用QXlsx头文件:
#include "xlsxdocument.h"
#include "xlsxformat.h"
#include "xlsxcellrange.h"
#include "xlsxchart.h"
#include "xlsxworkbook.h"
代码实现:
QDateTime save_time=QDateTime::currentDateTime();//时间
QString dir = qApp->applicationDirPath();
bool exist;
QDir *folder = new QDir();
QString historydir="/检测报告";
exist = folder->exists(dir+historydir);//文件夹是否存在
if(!exist)folder->mkdir(dir+historydir);//不存在创建文件夹
QXlsx::Document xlsx;
//格式化单元格样式
QXlsx::Format formatTitle;
formatTitle.setFontBold(true);// 粗体
formatTitle.setFontColor(QColor(Qt::black));//文字颜色
formatTitle.setFontSize(12);//字体大小
formatTitle.setBorderStyle(QXlsx::Format::BorderThin);//边框样式,细网格线
// formatTitle.setPatternBackgroundColor(Qt::lightGray);//单元格背景色
formatTitle.setFillPattern(QXlsx::Format::PatternSolid);//填充样式
formatTitle.setHorizontalAlignment(QXlsx::Format::AlignHCenter);//文本水平居中
formatTitle.setVerticalAlignment(QXlsx::Format::AlignVCenter);//文本垂直居中
formatTitle.setTextWrap(true);//设置自动换行
xlsx.setColumnWidth(1,25);//第一列,100列宽
xlsx.setColumnWidth(2,30);//第一列,100列宽
xlsx.setColumnWidth(3,20);//第一列,100列宽
xlsx.setColumnWidth(4,15);//第一列,100列宽
//绘制第一行标题
xlsx.mergeCells(QXlsx::CellRange(1,1,1,4), formatTitle);//合并单元格
xlsx.setRowHeight(1,40);//设置第1行高度
formatTitle.setFontSize(22);//字体大小
xlsx.write(1,1,"试验报告",formatTitle);
formatTitle.setFontSize(12);//字体大小
//绘制第二行
xlsx.mergeCells(QXlsx::CellRange(2,1,2,4), formatTitle);//合并单元格
xlsx.write(2,1,"人员:张三 时间:"+save_time.toString("yyyy-MM-dd hh:mm:ss"),formatTitle);
xlsx.setRowHeight(2,20);//设置第1行高度
xlsx.mergeCells(QXlsx::CellRange(3,1,3,4), formatTitle);//合并单元格
xlsx.setRowHeight(3,20);//设置高度
xlsx.write(3,1,"设备编号:0001 ",formatTitle);
xlsx.write(4,1,"试验项目",formatTitle);
xlsx.write(4,2,"参考范围",formatTitle);
xlsx.write(4,3,"试验数据",formatTitle);
xlsx.write(4,4,"是否合格",formatTitle);
xlsx.setRowHeight(4,20);//设置高度
xlsx.write(5,1,"发动机",formatTitle);
xlsx.write(5,2,"联合起动",formatTitle);
xlsx.write(5,3,"各起动一次",formatTitle);
xlsx.write(5,4,"合格",formatTitle);
xlsx.write(6,1,"发动机转速",formatTitle);
xlsx.write(6,2,"800r/min,油压应不小于0.15MPa",formatTitle);
xlsx.write(6,3,"油压>0.15",formatTitle);
xlsx.write(6,4,"不合格",formatTitle);
//人员签字单元格样式
QXlsx::Format formatTitle1;
formatTitle1.setFontSize(15);//字体大小
formatTitle1.setBorderStyle(QXlsx::Format::BorderNone);//边框样式
formatTitle1.setHorizontalAlignment(QXlsx::Format::AlignRight);//文本水平
formatTitle1.setVerticalAlignment(QXlsx::Format::AlignBottom);//文本垂直
xlsx.mergeCells(QXlsx::CellRange(26,1,26,4), formatTitle1);//合并单元格
xlsx.setRowHeight(26,30);//设置高度
xlsx.write(26,1,"试验人员:_____________ ",formatTitle1);
// 保存文件 文件名格式:试验报告yyyy-MM-dd hh-mm-ss.xlsx
QString strpath=dir+historydir+"/"+save_time.toString("试验报告yyyy-MM-dd hh-mm-ss")+".xlsx";
xlsx.saveAs(strpath);
//释放指针变量
xlsx.deleteLater();
相关文章:
QXlsx Qt操作excel(1)
QXlsx 是一个用于处理Excel文件的开源C库。它允许你在你的C应用程序中读取和写入Microsoft Excel文件(.xlsx格式)。该库支持多种操作,包括创建新的工作簿、读取和写入单元格数据、格式化单元格、以及其他与Excel文件相关的功能。 关于QXlsx的…...
20240131在ubuntu20.04.6下使用whisper不同模式的比对
20240131在ubuntu20.04.6下使用whisper不同模式的比对 2024/1/31 16:07 首先你要有一张NVIDIA的显卡,比如我用的PDD拼多多的二手GTX1080显卡。【并且极其可能是矿卡!】 2、请正确安装好NVIDIA最新的驱动程序和CUDA。可选安装! 3、配置whisper…...
HTTP相关问题
目录 1.从输入URL到页面展示到底发生了什么? 2.HTTP状态码有哪些? 2.1 2XX(成功状态码) 2.2 3XX(重定向状态码) 2.3 4XX(客户端错误状态码) 2.4 5XX(服务端错误状态码) 3.HTTP 请求头中常见的字段有哪些? 4.HTTP和HTTPS有什么区别&…...
闲人闲谈PS之五十三——离散制造中的魔鬼--物料套裁
惯例闲话:最近和老婆大人商议买车事宜,闲人以为会陷入买油车还是电车的纠结,没想到老婆大人无比坚定,买电车。在买车这方面,老婆的想法居然比闲人超前。闲人对车定位在代步工具,2年前,对车还是印…...
Dell服务器iDRAC9忘记密码, 通过RACADM工具不重启 重置密码
系列文章目录 文章目录 系列文章目录前言一、RACADM工具二、linux环境1.解压安装RACADM工具测试RACADM工具重置iDRAC密码 Windows环境 前言 一、RACADM工具 RACADM工具 官网参考信息 https://www.dell.com/support/kbdoc/zh-cn/000126703/%E5%A6%82%E4%BD%95-%E9%87%8D%E7%BD…...
2024年Java架构篇之数据结构与算法面试题
2024年Java实战面试题_java 5 年 面试-CSDN博客 2024年Java架构篇之数据结构与算法面试题 1、判断一个数是否是2的N次方,比如2、4、8、16是6、10不是 1:01、2:10、3:011、4:100、7:0111、8:1000、15:01111、16:10000 if(n&(n-1) 0) 那么n就是2的次方 n > 1...
蓝桥杯刷题day06——平均
1、题目描述 有一个长度为n 的数组(n 是 10 的倍数),每个数ai都是区间 [0,9] 中的整数。 小明发现数组里每种数出现的次数不太平均,而更改第i 个数的代价为bi, 他想更改若干个数的值使得这10 种数出现的次数相等&…...
MySQL分区的优缺点
前言 数据库中的分区技术为处理大规模数据提供了一种有效的手段,通过将数据划分成更小的可管理单元,我们能够提高查询性能、简化数据维护并更灵活地管理存储空间。然而,在采用分区时,我们必须认真考虑分区键的选择和实施细节&…...
2023年度总结
目录 工作读书生活展望 用一百分总结这一年,给自己打80分。 这一年中中常常,坚持踏踏实实走好每一步。 工作 项目上,先后经历了「从库恢复后自动上线」、「主动切换RTO优化」、「MGR高可用统一」,以及高可用稳定性建设等。另外&…...
aspose-words在linux上安装字体
大多数情况下,使用 Aspose.Words 将 DOC 或 DOCX 文档转换为 PDF 格式。如果需要在 Linux 计算机上执行此操作,确保 Aspose.Words 以最佳准确性渲染文档。 最常见的是,需要转换的 DOC 和 DOCX 文档是在 Windows 或 Mac OS 操作系统上使用 Microsoft Word 创建的。因此,DOC…...
SpringBoot实战项目第一天
环境搭建 后端部分需要准备: sql数据库 创建SpringBoot工程,引入对应的依赖(web\mybatis\mysql驱动) 配置文件application.yml中引入mybatis的配置信息 创建包结构,并准备实体类 完成今日开发后项目部分内容如下图示 用户注册于登录部分…...
C# 信号量(Semaphore)详细使用案例
文章目录 简介信号量的工作原理使用场景使用示例其他使用实例1. 数据库连接池管理2. 文件读写同步3. 生产者消费者问题4. 打印任务队列同步5. Web服务器并发请求限制 简介 在C#中,信号量(Semaphore)是.NET框架提供的一个同步类,位…...
《Docker极简教程》--Docker基础--Docker的基本概念
在这篇文章中我们先大致的了解以下Docker的基本概念,在后续的文章中我们会详细的讲解这些概念以及使用。 一、容器(Container) 1.1 容器的定义和特点 容器的定义 容器是一种轻量级、可移植的软件打包技术,用于打包应用及其依赖项和运行环境,…...
【AIGC核心技术剖析】DreamCraft3D一种层次化的3D内容生成方法
DreamCraft3D是一种用于生成高保真、连贯3D对象的层次化3D内容生成方法。它利用2D参考图像引导几何塑造和纹理增强阶段,通过视角相关扩散模型执行得分蒸馏采样,解决了现有方法中存在的一致性问题。使用Bootstrapped Score Distillation来提高纹理&#x…...
新版MQL语言程序设计:外观模式的原理、应用及代码实现
文章目录 一、什么是外观模式二、外观模式的实现原理三、外观模式的应用范围四、外观模式应用实例银行系统的设计量化交易系统的设计 五、外观模式的代码实现 一、什么是外观模式 外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个…...
Docker 搭建mysql 集群(二)
PXC方案 很明显 PXC方案在任何一个节点写入的数据都会同步到其他节点,数据双向同步的(在任何节点上都可以同时读写) 创建MySQL PXC集群 1 安装PXC镜像 docker pull percona/percona-xtradb-cluster:5.7.21 2 为PXC镜像改名 docker tag pe…...
L1-018 大笨钟-java
输入样例1: 19:05输出样例1: DangDangDangDangDangDangDangDang输入样例2: 07:05输出样例2: Only 07:05. Too early to Dang. java import java.awt.desktop.SystemEventListener; import java.util.Scanner;public class M…...
monaco-editor布局篇(二)-自动换行
monaco-editor的换行方式,主要分为3种情况: 不换行按照编辑器宽度换行按照制定列数换行 主要受wordwrap和wordwrapcolumn控制,具体如下: 取值含义off不换行,会一直滚动on换行,文本将在视区宽度内自动换行…...
08-常用集合(容器)
上一篇: 07-使用Package、Crates、Modules管理项目 Rust 的标准库包含许多非常有用的数据结构,称为集合。大多数其他数据类型表示一个特定值,但集合可以包含多个值。与内置的数组和元组类型不同,这些集合指向的数据存储在堆上&…...
CentOS 中文乱码
CentOS 中文乱码 1、 查看自己系统有没有安装中文语言包,可使用 locale -a 命令列出所有可用的语言环境 如果有中文,则不用安装,如果没有,需要重新安装,使用 yum install kde-l10n-Chinese 2、 修改 i18n 和 locale…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...
elementUI点击浏览table所选行数据查看文档
项目场景: table按照要求特定的数据变成按钮可以点击 解决方案: <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...
GraphQL 实战篇:Apollo Client 配置与缓存
GraphQL 实战篇:Apollo Client 配置与缓存 上一篇:GraphQL 入门篇:基础查询语法 依旧和上一篇的笔记一样,主实操,没啥过多的细节讲解,代码具体在: https://github.com/GoldenaArcher/graphql…...
生信服务器 | 做生信为什么推荐使用Linux服务器?
原文链接:生信服务器 | 做生信为什么推荐使用Linux服务器? 一、 做生信为什么推荐使用服务器? 大家好,我是小杜。在做生信分析的同学,或是将接触学习生信分析的同学,<font style"color:rgb(53, 1…...
项目进度管理软件是什么?项目进度管理软件有哪些核心功能?
无论是建筑施工、软件开发,还是市场营销活动,项目往往涉及多个团队、大量资源和严格的时间表。如果没有一个系统化的工具来跟踪和管理这些元素,项目很容易陷入混乱,导致进度延误、成本超支,甚至失败。 项目进度管理软…...
