VS+Qt应用程序开发-保存数据至csv表格文件

新建一个名为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);
}
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值