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

相关推荐
Bona Sun1 小时前
单片机手搓掌上游戏机(二十三)—esp32运行简单街机模拟器软硬件准备
c语言·c++·单片机
@小码农1 小时前
2025年北京海淀区中小学生信息学竞赛第二赛段C++真题
开发语言·数据结构·c++·算法
sulikey1 小时前
C++模板初阶详解:从函数模板到类模板的全面解析
开发语言·c++·模板·函数模板·类模板
ctgu902 小时前
PyQt5(九):如何在Qtdesigner中设置图片
qt·pyqt
0 0 02 小时前
CCF-CSP第39次认证第三题——HTTP 头信息(HPACK)【C++】
开发语言·c++·算法
汉克老师2 小时前
2023年海淀区中小学信息学竞赛复赛(小学组试题第二题 回文时间 (time))
c++·算法·北京海淀中小学信息竞赛·模拟法
还没想好取啥名3 小时前
C++11新特性(一)——原始字面量
开发语言·c++
天赐学c语言3 小时前
12.6 - K个一组翻转链表 && C 编译到执行的4个阶段
数据结构·c++·链表·c编译
爪哇部落算法小助手4 小时前
每日两题day65
数据结构·c++·算法
橘颂TA4 小时前
【剑斩OFFER】算法的暴力美学——颜色分类
数据结构·c++·算法·动态规划