news 2026/5/1 5:50:24

Qt的第三方库 QXlsx 最常用的使用方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Qt的第三方库 QXlsx 最常用的使用方法

详细安装第三方库请看我上一个文章:

QT安装第三方库实现对 .xlsx 文件进行读写操作-CSDN博客

最重要的 4 个类

QXlsx::Document一个 Excel 文件(核心入口)
QXlsx::Worksheet一个 Sheet(表)
QXlsx::Cell一个单元格
QXlsx::Format单元格样式

最基础用法

1.打开 Excel 文件

#include "xlsxdocument.h" using namespace QXlsx; Document xlsx("test.xlsx"); if (!xlsx.load()) { qDebug() << "open xlsx failed"; return; }

2.读取单元格

//行列方式:行列都是 从 1 开始,不是 0 QVariant v = xlsx.read(1, 1); // A1 qDebug() << v.toString(); //Excel 坐标方式 QVariant v = xlsx.read("B2");

3.写单元格

xlsx.write(1, 1, "Hello"); xlsx.write("B2", 123); xlsx.save();

Sheet(工作表)操作

1.获取当前 Sheet

Worksheet *sheet = xlsx.currentWorksheet();

2.切换 Sheet

xlsx.selectSheet("Sheet2"); 或 xlsx.selectSheet(1); // 下标从 0

3.获取所有 Sheet 名称

QStringList sheets = xlsx.sheetNames();

4.新建 / 删除 Sheet

xlsx.addSheet("NewSheet"); xlsx.deleteSheet("Sheet1");

5.遍历 Excel

Worksheet *sheet = xlsx.currentWorksheet(); //获取当前表 CellRange range = sheet->dimension();//返回工作表的“有效范围” 拿到有效内容的行数列数 for (int row = 1; row <= range.rowCount(); ++row) { for (int col = 1; col <= range.columnCount(); ++col) { auto cell = sheet->cellAt(row, col); // shared_ptr<Cell> if (!cell) { qDebug() << row << col << "[空]"; continue; } QVariant v = cell->value(); // ① 日期时间(必须优先) if (cell->isDateTime()) { QDateTime dt = cell->dateTime().toDateTime(); qDebug() << row << col << "[DateTime]" << dt.toString("yyyy-MM-dd HH:mm:ss"); } // ② 字符串 else if (v.typeId() == QMetaType::QString) { qDebug() << row << col << "[String]" << v.toString(); } // ③ 数值 else if (v.typeId() == QMetaType::Double) { qDebug() << row << col << "[Number]" << v.toDouble(); } // ④ 布尔 else if (v.typeId() == QMetaType::Bool) { qDebug() << row << col << "[Bool]" << v.toBool(); } // ⑤ 其他 else { qDebug() << row << col << "[Other]" << v; } } }

6.单元格类型

if (!v.isValid() || v.isNull()) { // 空单元格 } switch (v.typeId()) { case QMetaType::QString: qDebug() << "字符串:" << v.toString(); break; case QMetaType::Double: qDebug() << "数值:" << v.toDouble(); break; case QMetaType::QDateTime: qDebug() << "日期:" << v.toDateTime(); break; case QMetaType::Bool: qDebug() << "布尔:" << v.toBool(); break; default: qDebug() << "未知类型"; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 17:45:27

YOLOv8与MQTT协议结合实现边缘端实时通信

YOLOv8与MQTT协议结合实现边缘端实时通信 在智能摄像头遍布园区、工厂和家庭的今天&#xff0c;一个看似简单的问题却长期困扰着开发者&#xff1a;如何让设备“看得清”又“传得快”&#xff1f;传统方案往往将视频流全部上传至云端分析&#xff0c;结果是带宽吃紧、延迟飙升&…

作者头像 李华
网站建设 2026/4/27 21:45:24

如何用C#在两周内完成企业管理系统交付?一线架构师的6步极速开发法

第一章&#xff1a;C#企业管理系统快速开发的核心理念在构建企业级管理系统时&#xff0c;C#凭借其强大的类型系统、丰富的类库支持以及与.NET生态的深度集成&#xff0c;成为高效开发的首选语言。快速开发并非牺牲代码质量&#xff0c;而是通过标准化架构、模块化设计和自动化…

作者头像 李华
网站建设 2026/5/1 2:48:27

Java计算机毕设之基于springboot云南省旅游信息平台设计与实现景点信息、旅游线路、住宿信息、特色美食、旅游攻略(完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/5/1 2:47:54

Java毕设选题推荐:基于SpringBoot+Vue的农夫码头蔬菜销售网站管理系统设基于SpringBoot的农夫码头蔬菜销售网站的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/5/1 2:49:11

YOLOv8与YOLO-NAS对比:谁是当前最强目标检测器?

YOLOv8与YOLO-NAS对比&#xff1a;谁是当前最强目标检测器&#xff1f; 在智能摄像头遍地开花、工业质检迈向全自动的今天&#xff0c;一个核心问题始终困扰着视觉算法工程师&#xff1a;如何在有限算力下&#xff0c;既不牺牲精度又能跑出实时帧率&#xff1f; 过去几年&#…

作者头像 李华