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

相关推荐
UestcXiye1 小时前
《TCP/IP网络编程》学习笔记 | Chapter 3:地址族与数据序列
c++·计算机网络·ip·tcp
Mr.Q2 小时前
Qt多边形填充/不填充绘制
qt
霁月风2 小时前
设计模式——适配器模式
c++·适配器模式
jrrz08283 小时前
LeetCode 热题100(七)【链表】(1)
数据结构·c++·算法·leetcode·链表
可峰科技3 小时前
斗破QT编程入门系列之二:认识Qt:编写一个HelloWorld程序(四星斗师)
开发语言·qt
咖啡里的茶i3 小时前
Vehicle友元Date多态Sedan和Truck
c++
海绵波波1073 小时前
Webserver(4.9)本地套接字的通信
c++
@小博的博客3 小时前
C++初阶学习第十弹——深入讲解vector的迭代器失效
数据结构·c++·学习
爱吃喵的鲤鱼4 小时前
linux进程的状态之环境变量
linux·运维·服务器·开发语言·c++
7年老菜鸡5 小时前
策略模式(C++)三分钟读懂
c++·qt·策略模式