无需从零搭建!YOLOv8预配置镜像直接支持目标检测任务
2025/12/31 17:20:06
QT安装第三方库实现对 .xlsx 文件进行读写操作-CSDN博客
| QXlsx::Document | 一个 Excel 文件(核心入口) |
| QXlsx::Worksheet | 一个 Sheet(表) |
| QXlsx::Cell | 一个单元格 |
| QXlsx::Format | 单元格样式 |
#include "xlsxdocument.h" using namespace QXlsx; Document xlsx("test.xlsx"); if (!xlsx.load()) { qDebug() << "open xlsx failed"; return; }//行列方式:行列都是 从 1 开始,不是 0 QVariant v = xlsx.read(1, 1); // A1 qDebug() << v.toString(); //Excel 坐标方式 QVariant v = xlsx.read("B2");xlsx.write(1, 1, "Hello"); xlsx.write("B2", 123); xlsx.save();Worksheet *sheet = xlsx.currentWorksheet();xlsx.selectSheet("Sheet2"); 或 xlsx.selectSheet(1); // 下标从 0QStringList sheets = xlsx.sheetNames();xlsx.addSheet("NewSheet"); xlsx.deleteSheet("Sheet1");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; } } }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() << "未知类型"; }