From ecec86e4fd282f2c50302ec8aa5639ea585c2962 Mon Sep 17 00:00:00 2001 From: 123 <1239877983@qq.com> Date: Sun, 13 Apr 2025 18:10:29 +0800 Subject: [PATCH] 2025-04-13T18:10:29 --- src/data/xlsxhandler.cpp | 101 +++++++++++++++++++++++++++++---------- src/data/xlsxhandler.h | 5 +- src/global.h | 3 +- 3 files changed, 83 insertions(+), 26 deletions(-) diff --git a/src/data/xlsxhandler.cpp b/src/data/xlsxhandler.cpp index 21d646d..1c11ae2 100644 --- a/src/data/xlsxhandler.cpp +++ b/src/data/xlsxhandler.cpp @@ -1,19 +1,19 @@ #include "xlsxhandler.h" -#include "global.h" #include "logger.h" void XlsxHandler::test() { QString sourceFilePath = QDir::currentPath() + "/sample.xlsx"; - qDebug()<<"fileName:"<dimension().columnCount(); qDebug() << "row:" << rowCount << "col:" << colCount; - logde<<"0:"<cellAt(1, 1)->value().toString().toStdString(); - qDebug()<cellAt(1, 1)->value().toString(); + logde << "0:" << workSheet->cellAt(1, 1)->value().toString().toStdString(); + qDebug() << workSheet->cellAt(1, 1)->value().toString(); - int index = 2; + int index = 2; Global::ExperimentInfo ei; - ei.sampleName = workSheet->cellAt(index++, 2)->value().toString(); - logde<<"sample name:"<cellAt(index++, 2)->value().toString(); + logde << "sample name:" << ei.sampleName.toStdString(); + // return; ei.sampleWeight = workSheet->cellAt(index++, 2)->value().toString(); ei.date = workSheet->cellAt(index++, 2)->value().toString(); ei.operatorName = workSheet->cellAt(index++, 2)->value().toString(); ei.phaseSize = workSheet->cellAt(index++, 2)->value().toInt(); - QVector phaseTotalVtr; - for(int i = 0;i < ei.phaseSize;i++){ - PhaseTotalInfo phaseTotoal; - readPhaseData(workSheet,phaseTotoal); - phaseTotalVtr.push_back(phaseTotoal); + QVector phaseTotalVtr; + int startLineIndex = 9; + for(int i = 0; i < ei.phaseSize; i++) + { + Global::PhaseTotalInfo phaseTotal; + phaseTotal.phaseIndex = i + 1; + + readPhaseData(workSheet, startLineIndex, phaseTotal); + phaseTotalVtr.push_back(phaseTotal); + } +} + +void XlsxHandler::readPhaseData(QXlsx::Worksheet *workSheet, int &startLineIndex, + Global::PhaseTotalInfo &phaseTotal) +{ + // int startLineIndex = 9; + startLineIndex++; + startLineIndex++; + + phaseTotal.phase.cutoff_temp = workSheet->cellAt(startLineIndex++, 2)->value().toFloat(); + phaseTotal.phase.temp_flow = workSheet->cellAt(startLineIndex++, 2)->value().toFloat(); + phaseTotal.phase.constant_temp_time_min = (uint16_t)(workSheet->cellAt(startLineIndex++, 2)->value().toInt()); + phaseTotal.phase.gas = static_cast(workSheet->cellAt(startLineIndex++, 2)->value().toInt()); + + int dataSize = workSheet->cellAt(startLineIndex++, 2)->value().toInt(); + for(int i = 0; i < dataSize; i++) + { + Global::ExperimentData data; + data.runTime = workSheet->cellAt(startLineIndex++, 2)->value().toFloat(); + data.sampleTemp = workSheet->cellAt(startLineIndex++, 3)->value().toFloat(); + data.dsc = workSheet->cellAt(startLineIndex++, 4)->value().toFloat(); + + phaseTotal.dataVtr.push_back(data); + } +} + +void XlsxHandler::writeFile() +{ + QXlsx::Document xlsx; + xlsx.addSheet("Sheet1"); // 添加一个新的工作表 + +#if 0 + // 创建一个新的 Excel 文档 + QXlsx::Document xlsx; + + // 检查数据是否为空 + if (data.isEmpty()) { + qWarning() << "没有数据可写入"; + return ; } -} + // 遍历数据并写入单元格 + for (int row = 0; row < data.size(); ++row) { + const QVector& rowData = data[row]; + for (int col = 0; col < rowData.size(); ++col) { + QString cellValue = rowData[col]; + xlsx.write(row + 1, col + 1, cellValue); // 行和列从1开始 + } + } -void XlsxHandler::readPhaseData(QXlsx::Worksheet *workSheet,const int index, PhaseTotalInfo &phase) -{ - const int startIndex = 9; -#if 0 - int index = startIndex; - phase.phaseName = workSheet->cellAt(index++, 2)->value().toString(); - phase.phaseWeight = workSheet->cellAt(index++, 2)->value().toString(); + // 保存文件 + if (!xlsx.saveAs(filePath)) { + qWarning() << "无法保存文件:" << filePath; + return ; + } + + qDebug() << "文件保存成功:" << filePath; + return ; #endif } diff --git a/src/data/xlsxhandler.h b/src/data/xlsxhandler.h index 111fce5..f6167ec 100644 --- a/src/data/xlsxhandler.h +++ b/src/data/xlsxhandler.h @@ -5,11 +5,14 @@ #include "xlsxdocument.h" #include "protocol.h" +#include "global.h" namespace XlsxHandler { void test(); void readFile(const QString filePath); - void readPhaseData(QXlsx::Worksheet*,const int index,PhaseTotalInfo&); + void readPhaseData(QXlsx::Worksheet*,int& startLineIndex,Global::PhaseTotalInfo&); + + void writeFile(); } #endif // XLSX_H diff --git a/src/global.h b/src/global.h index ac85952..942689b 100644 --- a/src/global.h +++ b/src/global.h @@ -5,7 +5,7 @@ #include #include -//#include "filemanager.h" +#include "protocol.h" class Global:public QObject { @@ -35,6 +35,7 @@ public: #endif struct ExperimentData { + float runTime; float sampleTemp; float dsc; };