2025-06-09T13:38:11

This commit is contained in:
yuntang 2025-06-09 13:38:12 +08:00
parent 23667e3f8a
commit 2170adff06
4 changed files with 167 additions and 1 deletions

Binary file not shown.

Binary file not shown.

View File

@ -528,6 +528,172 @@ void XlsxHandler::writeAnalysisOperationDetail(QXlsx::Document *xlsx, const int
void XlsxHandler::writeSmoothnessFile(const QString filePath)
{
if(Global::_curveFileDataVtr.empty()){
logde<<"curve file data vtr empty...";
return;
}
Global::ExperimentInfo& ei = Global::_curveFileDataVtr.first().ei;
QXlsx::Document xlsx;
xlsx.addSheet("Sheet1"); // 添加一个新的工作表
// Write experiment info.
int row = 1;
xlsx.write(row++ , 1, ConFileDataInfo);
xlsx.write(row , 1, ConSampleName);
QString sampleName = ei.sampleName;
if(sampleName.isEmpty()){
sampleName = "sample";
}
xlsx.write(row , 2, sampleName);
row++;
xlsx.write(row , 1, ConSampleWeight);
QString sampleWeight = ei.sampleWeight;
if(sampleWeight.isEmpty()){
sampleWeight = "1";
}
xlsx.write(row , 2, sampleWeight);
xlsx.write(row , 3, ConUnitMg);
row++;
xlsx.write(row , 1, ConCrucibleWeight);
xlsx.write(row , 2, 0);
xlsx.write(row , 3, ConUnitMg);
row++;
xlsx.write(row , 1, Conexperimenter);
QString experimentor = ei.experimentor;
if(experimentor.isEmpty()){
experimentor = "experimentor";
}
xlsx.write(row , 2, experimentor);
row++;
xlsx.write(row , 1, ConDate);
QString date = ei.date;
if(date.isEmpty()){
date = "20250101";
}
xlsx.write(row , 2, date);
row++;
xlsx.write(row , 1, ConMeasureType);
xlsx.write(row , 2, "样品");
row++;
int phaseSizeRow = row;
int phaseCount = 0;
xlsx.write(row , 1, ConPhaseSize);
xlsx.write(row , 2, ei.phaseVtr.size());
row++;
// Write phase data.
logde<<"curve file vtr size:"<<Global::_curveFileDataVtr.size();
QVector<Global::PhaseTotalInfo>& phaseVtr =
Global::_curveFileDataVtr.first().phaseTotalVtr;
int dataSizeRow = 0;
// logde<<"phase vtr size:"<<ei.phaseVtr.size();
for(int i = 0; i < phaseVtr.size();i++){
logde<<"phase index:"<<i;
// const Phase& phase = ei.phaseVtr.at(i);
Phase phase = phaseVtr.at(i).phase;
if(phase.onoff == 0){
// logde<<"onoff == 0.";
continue;
}
phaseCount++;
xlsx.write(row , 1, ConPhaseProfix);
xlsx.write(row , 2, ConPhaseHeaderTime);
xlsx.write(row , 3, ConPhaseHeaderTemp);
xlsx.write(row , 4, ConPhaseHeaderVoltage);
xlsx.write(row , 5, ConPhaseHeaderTime);
row++;
xlsx.write(row , 1, ConPhaseIndex);
xlsx.write(row , 2, i + 1);
row++;
// phase info
xlsx.write(row , 1, ConPhaseCutoffTemp);
xlsx.write(row , 2, phase.cutoff_temp);
xlsx.write(row , 3, ConUnitDegreeCentigrade);
row++;
xlsx.write(row , 1, ConPhaseHeatingRate);
xlsx.write(row , 2, phase.temp_flow);
xlsx.write(row , 3, ConUnitDegreeCentigradePerMin);
row++;
xlsx.write(row , 1, ConPhaseConstantTempTime);
xlsx.write(row , 2, phase.constant_temp_time_min);
xlsx.write(row , 3, ConUnitMin);
row++;
xlsx.write(row , 1, ConPhaseAtmosphere);
switch(phase.gas){
case GasType::NC:
xlsx.write(row , 2, "NC");
break;
case GasType::N2:
xlsx.write(row , 2, "N2");
break;
case GasType::O2:
xlsx.write(row , 2, "O2");
break;
default:break;
}
row++;
// phase data.
// logde<<"Global::_curveExperimentDataVtr size:"
// <<Global::_curveExperimentDataVtr.size();
const QVector<Global::ExperimentData>& edVtr =
phaseVtr.at(i).dataVtr;
// phase data size.
dataSizeRow = row;
xlsx.write(row , 1, ConPhaseDataSize);
xlsx.write(row , 2, edVtr.size());
row++;
// logde<<"edVtr size:"<<edVtr.size();
for(int index = 0;index < edVtr.size();index++){
// logde<<"index :"<<index;
const Global::ExperimentData & ed = edVtr.at(index);
xlsx.write(row , 1, index);
xlsx.write(row , 2, ed.runTime);
xlsx.write(row , 3, ed.sampleTemp);
xlsx.write(row , 4, ed.dsc);
xlsx.write(row , 5, ed.constantTempTime);
row++;
}
}
//
xlsx.write(phaseSizeRow , 1, ConPhaseSize);
xlsx.write(phaseSizeRow , 2, phaseCount);
//
writeAnalysisOperationDetail(&xlsx,row);
//
logde<<"before xlsx save as...";
if (!xlsx.saveAs(filePath)) {
logde<<"Save xlsx failed.";
return ;
}
#if 0
if(Global::_curveFileDataVtr.empty()){
// Load experiment data.

View File

@ -279,7 +279,7 @@ bool MainWindow::saveFile(const QString fileName,const Global::Mode mode)
}else{
logde<<"analysis xlsx data...";
if(Global::_smoothnessFlag){
XlsxHandler::writeSmoothnessFile(filePath);
}else{
XlsxHandler::appendAnalysisOperation(filePath);
}