新建一个名为saveCsvTest的项目,打开Qt Designer设计师界面, 向界面中加入以下控件
对象名如下:
新建表格:btn_newCsv
插入当前文件:btn_insertHeader
插入当前文件(无时间):btn_insertData
插入当前文件(第一列为时间):btn_insertDataWithTime
表头数据:lineEdit_header
单元格数据:lineEdit_data
saveCsvTest.h
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_saveCsvTest.h"
#include <QTimer>
#include <QTime>
class saveCsvTest : public QMainWindow
{
Q_OBJECT
public:
saveCsvTest(QWidget *parent = Q_NULLPTR);
public:
QTimer m_tUpdateTime;
QString filePath;
QList<QString> csvDataList;
public slots:
void on_btn_newCsv_clicked(); //新建表格
void on_btn_insertHeader_clicked(); //插入表头
void on_btn_insertData_clicked(); //插入数据
void on_btn_insertDataWithTime_clicked(); //插入数据和时间
private:
Ui::saveCsvTestClass ui;
};
saveCsvTest.cpp
#include "saveCsvTest.h"
#include <QFile>
//将数据保存到excel中
//参数:filepath--保存的路径
// strList--保存的数据列表
//保存格式以,分隔,以#结尾一行
bool saveCsv(QString filepath, QList<QString> strList)
{
int num = strList.count();
QFile csvFile;
csvFile.setFileName(filepath);
QString sdata = "";
if (csvFile.open(QIODevice::WriteOnly | QIODevice::Append)) //打开的时候清空了,用append的模式实现
{
//追加数据
for (int i = 0; i < num; i++)
{
if (strList.at(i) != "#")
{
sdata += strList.at(i);
if ((strList.at(i) == "\n") || (strList.at(i) == ","))//防止"\n"和","后边在加逗号
continue;
else
sdata += ",";
}
else
{
sdata += "\n";
}
}
sdata += "\n";
csvFile.write(sdata.toLocal8Bit());
}
csvFile.close();
return true;
}
saveCsvTest::saveCsvTest(QWidget *parent)
: QMainWindow(parent)
, filePath("")
{
ui.setupUi(this);
//更新时间
connect(&m_tUpdateTime, &QTimer::timeout, this, [=]()
{
QDateTime time = QDateTime::currentDateTime();
ui.lcdNumber->display(time.toString("yyyy-MM-dd hh:mm:ss"));
});
m_tUpdateTime.start(50); //开启时间定时器
}
//新建表格
void saveCsvTest::on_btn_newCsv_clicked()
{
QDateTime currentT = QDateTime::currentDateTime();
filePath = "./" + currentT.toString("yyyy_MM_dd_hh_mm_ss_zzz")+".csv";
}
//插入表头
void saveCsvTest::on_btn_insertHeader_clicked()
{
if (filePath.isEmpty())
{
QDateTime currentT = QDateTime::currentDateTime();
filePath = "./" + currentT.toString("yyyy_MM_dd_hh_mm_ss_zzz") + ".csv";
}
csvDataList.clear();
QString data = ui.lineEdit_header->text();
csvDataList = data.split(",");
saveCsv(filePath, csvDataList);
}
//插入数据
void saveCsvTest::on_btn_insertData_clicked()
{
if (filePath.isEmpty())
{
QDateTime currentT = QDateTime::currentDateTime();
filePath = "./" + currentT.toString("yyyy_MM_dd_hh_mm_ss_zzz") + ".csv";
}
csvDataList.clear();
QString data = ui.lineEdit_data->text();
csvDataList = data.split(",");
saveCsv(filePath, csvDataList);
}
//插入数据和时间
void saveCsvTest::on_btn_insertDataWithTime_clicked()
{
QDateTime currentT = QDateTime::currentDateTime();
if (filePath.isEmpty())
{
filePath = "./" + currentT.toString("yyyy_MM_dd_hh_mm_ss_zzz") + ".csv";
}
csvDataList.clear();
QString data = ui.lineEdit_data->text();
csvDataList = data.split(",");
csvDataList.prepend(currentT.toString("yyyy_MM_dd_hh_mm_ss_zzz"));
saveCsv(filePath, csvDataList);
}