以下接口包括按时间生成CSV总表和每次测试根据SN和时间区分的子文件夹(包括子CSV和子图片存放地址)
接口定义
///CSV文件保存
// //测试数据总表
//添加数据,用";"分隔开
bool TotalCSVDataAdd(QString data);
//测试完毕,跳转到下一行
bool TotalCSVDataOneTimeEnd();
//
//
//子表文件夹中
//每个对应产品的文件夹下可以放测试的图片
//根据新建文件夹
//新建CSV表格,返回文件夹名字(也是子CSV名字)
//调用示例:QString name = NewCSVFile();
QString NewCSVFile(QString sn = "sn");
//每一个测试项调用一次,其中会解析QString data 写入到每一个测试项中(每次测试完加入数据)
//解析时会按";"分隔开,写入到CSV文件中去
//调用示例:bool status2 = SaveCSVData(name, "777;888;zxcv;");
bool SaveCSVData(QString File, QString data);
//获取每个产品图片存储位置
QString SNDutSavePic(QString file, QString picname);
bool PhaseBase::TotalCSVDataAdd(QString data)
{
//2.文件名采用系统时间戳生成唯一的文件
QDateTime current_date_time = QDateTime::currentDateTime();
QString current_date = current_date_time.toString("yyyy_MM_dd");
QString csvFile;//CSV名
// 先检查有没有文件夹存在,没有就让程序创建文件夹先
QDir dirCSV;
QString strDir = QString("D://DUTData_CSV");
if (!dirCSV.exists(strDir))
dirCSV.mkpath(strDir);
//csvFile += tr("/%3_TestData_%4.csv").arg(sn).arg(current_date).arg(sn).arg(current_date);
csvFile = strDir + tr("/%1_TestData.csv").arg(current_date);
//3.用QFile打开.csv文件 如果不存在则会自动新建一个新的文件
QFile file(csvFile);
if (file.exists())
{
//如果文件存在执行的操作,此处为空,因为文件不可能存在
}
file.open(QIODevice::Append | QIODevice::Text);
QTextStream out(&file);
//4.获取数据 创建第一行
QString csvdata1 = data.replace(";", ",");
QString csvdata2 = data.replace("+", ","); //外部测试模式 修改+号存储
out << data;//表头
//5.写完数据需要关闭文件
file.close();
return true;
}
bool PhaseBase::TotalCSVDataOneTimeEnd()
{
TotalCSVDataAdd("\n");
return true;
}
/// <summary>
/// 子表
/// </summary>
/// <param name="sn"></param>
/// <returns></returns>
QString PhaseBase::NewCSVFile(QString sn)
{
//2.文件名采用系统时间戳生成唯一的文件
QDateTime current_date_time = QDateTime::currentDateTime();
QString current_date = current_date_time.toString("yyyy_MM_dd_hh_mm_ss");
QString csvFile;//CSV名
// 先检查有没有文件夹存在,没有就让程序创建文件夹先
QDir dirCSV;
QString strDir = QString("D://DUTData_CSV//%1_%2").arg(sn).arg(current_date);
if (!dirCSV.exists(strDir))
dirCSV.mkpath(strDir);
//csvFile += tr("/%3_TestData_%4.csv").arg(sn).arg(current_date).arg(sn).arg(current_date);
csvFile = strDir + tr("/%1_%2.csv").arg(sn).arg(current_date);
//3.用QFile打开.csv文件 如果不存在则会自动新建一个新的文件
QFile file(csvFile);
if (file.exists())
{
//如果文件存在执行的操作,此处为空,因为文件不可能存在
}
file.open(QIODevice::ReadWrite | QIODevice::Text);
QTextStream out(&file);
//4.获取数据 创建第一行
//out << tr("UID,") << tr("sysID,") << tr("UsrID,") << tr("MeterNum,") << tr("CMD,\n");//表头
qDebug() << "NewCSVFile:csvFile:" << csvFile;
//返回文件夹名(CSV名字相同)
return sn + "_" + current_date;
}
bool PhaseBase::SaveCSVData(QString File, QString data)
{
QString csvFile = "D://DUTData_CSV//" + File + "/" + File + ".csv";
//3.用QFile打开.csv文件 如果不存在则会自动新建一个新的文件
QFile file(csvFile);
if (file.exists())
{
//如果文件存在执行的操作,此处为空,因为文件不可能存在
}
//file.open(QIODevice::ReadWrite | QIODevice::Text);
file.open(QIODevice::Append | QIODevice::Text);
QTextStream out(&file);
//4.获取数据 创建第一行
//out << data<<",";//CSV中用","分隔开数据,
//存入CSV中 用","替代";"
QString csvdata1 = data.replace(";", ",");
QString csvdata2 = data.replace("+", ",");//外部测试模式 修改+号存储
out << data << "\n";//一行结束,换行
//5.写完数据需要关闭文件
file.close();
return true;
}
QString PhaseBase::SNDutSavePic(QString file, QString picname)
{
QString picFile = "D://DUTData_CSV//" + file + "/" + picname;
qDebug() << "SNDutSavePic:" << picFile;
return picFile;
}
使用:
{
CSVFileName = NewCSVFile();
qDebug() << "NewCSVFile();" << CSVFileName;
}
{
//存储到总CSV中
QString Test1Num = "12345;78910;";
QString Test1Result = "OK";
QString Test2Num = "12345;78910;";
QString Test2Result = "NG";
TotalCSVDataAdd("Test1;" + Test1Num + ";" + Test1Result + ";"); //总CSV文件
TotalCSVDataAdd("Test2;" + Test2Num + ";" + Test2Result + ";");
TotalCSVDataOneTimeEnd(); //一个SN结束,进入下一行
//存储到到子CSV中
SaveCSVData(CSVFileName, "Test1;" + Test1Num + ";" + Test1Result + ";");
SaveCSVData(CSVFileName, "Test2;" + Test2Num + ";" + Test2Result + ";");
QString Savepicpath = SNDutSavePic(CSVFileName, "NearPic.jpg"); //此Savepicpath就是图片地址
qDebug() << "Savepicpath:" << Savepicpath;
}
生成结果: