最近在做的項目,因為要做測試資料記錄,以便使用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檔案是一樣一樣的。
