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();

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

车载充电器(OBC)氮化镓(GaN)驱动(高压高功率)设计(第四篇)

上图来自于网络 1、GaN FET概念 GaN FET,全称为Gallium Nitride Field-Effect Transistor(氮化镓场效应晶体管),是一种采用氮化镓(Gallium Nitride, GaN)材料制作的新型功率半导体器件。相较于传统的硅基…

服务器性能监控管理方法及工具

服务器是组织数据中心的主干,无论是优化的用户体验,还是管理良好的资源,服务器都能为您完成所有工作,保持服务器随时可用和可访问对于面向业务的应用程序和服务以最佳水平运行至关重要。 理想的服务器性能需要主动监控物理和虚拟…

2024牛客寒假算法基础集训营1(视频讲解全部题目)

2024牛客寒假算法基础集训营1&#xff08;题目全解&#xff09; ABCDEFGHIJKLM 2024牛客寒假算法基础集训营1&#xff08;视频讲解全部题目&#xff09; A #include<bits/stdc.h> #define endl \n #define deb(x) cout << #x << " " << …

开源节点框架STNodeEditor使用

节点&#xff0c;一般都为树形Tree结构&#xff0c;如TreeNode&#xff0c;XmlNode。 树形结构有其关键属性Parent【父节点】&#xff0c;Children【子节点】 LinkedListNode为链表线性结构&#xff0c;有其关键属性Next【下一个】&#xff0c;Previous【上一个】&#xff0c…

item_get_video-获取视频详情(bili.item_get_video)

B站&#xff08;Bilibili&#xff09;的item_get_video API用于获取视频的详细信息。通过调用该API&#xff0c;您将能够获得视频的基本信息、元数据、播放链接等。这使得开发者可以轻松地将B站视频集成到自己的应用程序或网站中&#xff0c;为用户提供更丰富的内容和更好的体验…

时间序列预测 —— ConvLSTM 模型

时间序列预测 —— ConvLSTM 模型 时间序列预测是一项重要的任务&#xff0c;ConvLSTM&#xff08;卷积长短时记忆网络&#xff09;是深度学习领域中用于处理时序数据的强大工具之一。本文将介绍 ConvLSTM 的理论基础、优缺点&#xff0c;与其他常见时序模型&#xff08;如 LS…

java基本知识详解

八大基本数据类型 java的数据类型可以说很简洁&#xff0c;只有整型&#xff0c;浮点型&#xff0c;字符型&#xff0c;和布尔型四大种&#xff0c;八小种基本类型。 整型 byte&#xff1a;-2^7 ~ 2^7-1&#xff0c;即-128 ~ 127。1字节。 short&#xff1a;-2^15 ~ 2^15-…

Redisson看门狗机制

一、背景 网上redis分布式锁的工具方法&#xff0c;大都满足互斥、防止死锁的特性&#xff0c;有些工具方法会满足可重入特性。如果只满足上述3种特性会有哪些隐患呢&#xff1f;redis分布式锁无法自动续期&#xff0c;比如&#xff0c;一个锁设置了1分钟超时释放&#xff0c;…

leetcode 3.无重复字符的最长字串(滑动窗口) (C++)DAY2

文章目录 1.题目示例提示 2.解答思路3.实现代码结果 4.总结 1.题目 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”&#xff0c;所以其长度为 3。 示…

专业145+总分420+电子科技大学858信号与系统考研经验电子信息与通信

今年考研各门都相对发挥比较好&#xff0c;总分420&#xff0c;专业858信号与系统145&#xff0c;数学135顺利上岸电子科技大学&#xff0c;应群里很多学弟学妹要求&#xff0c;我总结一下自己的复习经验&#xff0c;希望可以在考研路上&#xff0c;助大家一臂之力。专业课&…

eslint报错文档大量红色报错符号 不自动修正

确保eslint在工作 控制台大量报错信息 确保setting.json 开了保存的时候自动格式化代码 这个时候保存的时候代码可以自动被格式化 但是 文档中和控制台中仍然有大量的报错 信息 此时此刻说明 格式化文档的文件不是按照eslint 格式化的 可以网上找找现成可用的setting.json抄…

如何以管理员身份删除node_modules文件

今天拉项目&#xff0c;然后需要安装依赖&#xff0c;但是一直报错&#xff0c;如下&#xff1a; 去搜这个问题会让把node_modules文件先删掉 再去安装依赖。我在删除的过程中会说请以管理员身份来删除。 那么windows如何以管理员身份删除node_modules文件呢&#xff1f; wi…