简述
qt对csv文件进行读写,可添加pri后使用,demo测试工程编译运行正常,demo工程下载路径:https://download.csdn.net/download/linyibin_123/86394807
核心文件
ctcsvfile.pri
HEADERS += \
$$PWD/ctcsvfile.h
SOURCES += \
$$PWD/ctcsvfile.cpp
ctcsvfile.h
#ifndef CTCSVFILE_H
#define CTCSVFILE_H
#include <QObject>
class QFile;
class CtCsvFile : public QObject
{
Q_OBJECT
public:
static CtCsvFile& getInstance();
QStringList readFile(const QString& filePath);
bool saveFile(const QString& filePath, const QStringList& content);
signals:
void sigSaveResult(bool result);
private:
explicit CtCsvFile(QObject *parent = nullptr);
private:
QFile* m_pFile = Q_NULLPTR;
};
#endif // CTCSVFILE_H
ctcsvfile.cpp
#include "ctcsvfile.h"
#include <QFile>
#include <QDebug>
#include "commondef.h"
CtCsvFile &CtCsvFile::getInstance()
{
static CtCsvFile s_csv;
return s_csv;
}
QStringList CtCsvFile::readFile(const QString &filePath)
{
m_pFile->setFileName(filePath);
QStringList strList;
if (m_pFile->open(QIODevice::ReadOnly))
{
MY_DEBUG << "file open success";
m_pFile->seek(0);
while (!m_pFile->atEnd())
{
QString temp = QString::fromUtf8(m_pFile->readLine());
strList << temp;
}
m_pFile->close();
return strList;
}
else
{
MY_DEBUG << "file open fail";
return strList;
}
}
bool CtCsvFile::saveFile(const QString &filePath, const QStringList &content)
{
m_pFile->setFileName(filePath);
QStringList lst;
if (m_pFile->open(QIODevice::WriteOnly | QIODevice::Truncate))
{
for (int i = 0, size = content.size(); i < size; ++i)
{
m_pFile->write(content[i].toUtf8().data());
}
m_pFile->close();
MY_DEBUG << "save file " << filePath << "success";
emit sigSaveResult(true);
return true;
}
MY_DEBUG << "save file " << filePath << "fail";
emit sigSaveResult(false);
return false;
}
CtCsvFile::CtCsvFile(QObject *parent) : QObject(parent)
{
m_pFile = new QFile(this);
}
测试使用 (main.cpp)
#include <QCoreApplication>
#include "ctcsvfile.h"
#include "commondef.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString filename = QCoreApplication::applicationDirPath() + "/csv/test.csv";
QStringList content1;
content1 << "0,AAA\r\n" << "1,BBB\r\n" << "2,CCC\r\n" << "3,DDD\r\n";
if(CtCsvFile::getInstance().saveFile(filename, content1))
{
QStringList contents = CtCsvFile::getInstance().
readFile(QCoreApplication::applicationDirPath() + "/csv/test.csv");
MY_DEBUG << "contents.size():" << contents.size();
for(int i = 0; i < contents.size(); i++)
{
QStringList Temps = contents.at(i).split(",");
QString strNumber = QString::fromUtf8(Temps.at(0).toUtf8());
QString strLetter = QString::fromUtf8(Temps.at(1).toUtf8());
MY_DEBUG << "Number:" << strNumber << ", Letter:" << strLetter;
}
}
return a.exec();
}
结果展示: