最近在做的项目,因为要做测试数据记录,以便使用miniTab软件统计分析,那么我们常见的数据记录,可能有txt、excel、数据库,但是txt记录的数据不方便复制到minitab上,数据库方式又有点大材小用的感觉,所以只剩下excel表格方式了,但是有一点不好的就是需要重复打开微软的office软件,引入不稳定因素的同时,实测保存的速度又比较慢。于是把这三种方式都给否定了,最后查资料得知可以使用.csv格式的文件保存数据,QT操作就跟操作txt文档一样简单方便,只要数据已逗号“,”分开,那么用excel打开,排布就跟保存excel的格式一模一样,很方便的进行整行整列的复制、分析,下边我们就来直接贴代码:
#include <QtWidgets/QApplication>
#include <QDate>
#include <QTextStream>
#include <QFile>
#include <QString>
void SaveTestResultToCSVFile()
{
//保存数据的文件路径
QString csvFileName = QApplication::applicationDirPath() + "/TestData/" + \
QDateTime::currentDateTime().toString("yyyyMMdd") + ".csv";
QFile file(csvFileName);
if (!file.exists()) //文件不存在的时候便新建,以当天日期为命名
{
file.open(QIODevice::WriteOnly);
QTextStream txtOutPut(&file);
txtOutPut << "Unit(mm)\n";
txtOutPut << "Time,Data1,Data2,Data3,Data4\n"; //注意,每行数据结束后要加换行符
file.close();
}
file.open(QIODevice::WriteOnly|QIODevice::Append);
QTextStream txtOutPut(&file);
QString msg = QDateTime::currentDateTime().toString("hh:mm:ss") + "," \
+ "12.12" + ","\
+ "13.25" + ","\
+ "14.59" + ","\
+ "45.32" + "\n"; //这里只是模拟数据,具体数据做相对改动即可
txtOutPut << msg;
file.flush();
file.close();
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//做个简单的循环,模拟保存几组数据
for (int i=0; i<5; i++)
{
SaveTestResultToCSVFile();
}
return a.exec();
}
编译运行后,我们到TestData文件夹下找到保存的.csv文件,使用excel表格打开,如下,是不是比直接操作excel要方便的多,而且写的速度还很快,跟操作txt文件是一样一样的。