QT C++ 数据保存到本地excel表格 (.txt .csv)复制拿去用

一、介绍  

 采用了单例者模式,什么是单例者模式 ? 来源于24种设计模式之一,非常常用。我简单介绍: "其目标是确保一个类只有一个实例,并提供一个全局访问点来获取这个实例"。通俗来讲就是 .h头文件放在哪里,那里就能调用它.h文件的方法,不需要创建对象。

.h文件

#pragma once
#include <QString>
#include <QMap>
#include <QVariantMap>
#include <QDateTime>
#include <Qdir>

class saveData : public QObject
{
	Q_OBJECT
		saveData(QObject* parent = nullptr);
public:
	~saveData();

	static saveData* Singleton();
	/// <summary>
	/// 保存QVariantMap数据到本地
	/// </summary>
	/// <param name="Path">文件路径 ,写绝对路径</param>
	/// <param name="csvName">文件名.后缀( .csv 或者 .txt)</param>
	/// <param name="Result">文件内容QVariantMap(键是文件头)</param>
	/// <returns></returns>

	 bool SaveDataToLocal(QString Path, QString SaveName, QVariantMap Result);

};

.cpp文件

#include "saveData.h"
saveData::saveData(QObject* parent)
{

}

saveData::~saveData()
{

}

saveData* saveData::Singleton()
{
	static saveData inst(nullptr);
	return &inst;
}

bool saveData::SaveDataToLocal(QString Path, QString SaveName, QVariantMap Result )
{
	try
	{

		QString FilePath = Path + "/" + SaveName;

		QDir dir(Path);  
		if (!dir.exists())  	
		{
		
			dir.mkpath(Path);
		
		}

	
		QFile SaveFile(FilePath); 
		QFileInfo f(FilePath); 	
		if (!f.isFile())
		{
			
			QString Title = ""; 
			SaveFile.open(QIODevice::WriteOnly);
			for (QString key: Result.keys())
			{
				Title += key + ","; 
			}
		
			Title += "\r\n";
			SaveFile.write(Title.toUtf8());
			SaveFile.close();
		}



		SaveFile.open(QIODevice::WriteOnly | QIODevice::Append);
		foreach(auto it, Result)
		{
			SaveFile.write((it.toString().toStdString() + ",").c_str());
		}
		SaveFile.write("\r\n");
		SaveFile.close();
		return true;
	}
	catch (const std::exception&)
	{
		return false;
	}
}

二、使用方法

例如QTableWidget的数据可以添加到QVariantMap  再保存。u8 就是 UTF-8 可以中文表头。保存后缀可以 .TXT 或者 .CSV。

#include "saveData.h"

testRelease::testRelease(QWidget *parent)
    : QWidget(parent)
{
    ui.setupUi(this);


    for (int i = 1; i <= 10; i++)
    {
       QVariantMap data;  // 可以从QTableWidget 的数据调入进来
       data[u8"学校"] = u8"广州商学院";
       data[u8"学号"] = QString::number(i);
       data[u8"姓名"] = u8"李"+QString::number(i);
       data[u8"班级"] = u8"计算机科学与技术2001班";
     
       saveData::Singleton()->SaveDataToLocal("d:/1", u8"学生信息.csv", data);
       saveData::Singleton()->SaveDataToLocal("d:/1", u8"学生信息.txt", data);
    }

}

三、使用结果

1.保存路径

2.保存.txt结果

3.保存.csv结果

三、通过按钮QTableWidget数据导出
QT C++ 的 QTableWidget数据导出-CSDN博客文章浏览阅读2次。如果你开发的QT应用程序没有数据查询或者数据统计功能,可以使用此功能做导出数据可以让excel表格复杂的数据处理、数据查询。https://blog.csdn.net/qq_54122623/article/details/135731136

QT 数据导出

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值