Создать файл.csv в C++ в qt
Я хочу создать CSV-файл с использованием C++, используя Qt для приложения и UI Framework. Есть ли библиотека для файла CSV.
3 ответа
Вы можете в основном заглянуть в libqxt.
Использование QxtCsvModel
Класс QxtCsvModel [libqxt.bitbucket.org] предоставляет QAbstractTableModel [qt-project.org] для файлов CSV. Это, пожалуй, самый простой способ чтения и записи файлов csv без необходимости разбора формата csv на то, что может понять qt. Это так же просто, как использование одной строки кода, например, следующее читает файл csv:
csvmodel->setSource(fileName);
Попробуйте библиотеку qtcsv для чтения и записи csv-файлов. Пример:
#include <QList>
#include <QStringList>
#include <QDir>
#include <QDebug>
#include "qtcsv/stringdata.h"
#include "qtcsv/reader.h"
#include "qtcsv/writer.h"
int main()
{
// prepare data that you want to save to csv-file
QStringList strList;
strList << "one" << "two" << "three";
QtCSV::StringData strData;
strData.addRow(strList);
strData.addEmptyRow();
strData << strList << "this is the last row";
// write to file
QString filePath = QDir::currentPath() + "/test.csv";
QtCSV::Writer::write(filePath, strData);
// read data from file
QList<QStringList> readData = QtCSV::Reader::readToList(filePath);
for ( int i = 0; i < readData.size(); ++i )
{
qDebug() << readData.at(i).join(",");
}
return 0;
}
Я пытался сделать его небольшим и простым в использовании. См. Файл Readme для документации библиотеки и других примеров кода.
Просто пишешь CSV? Хотя Google может раскрыть некоторые библиотеки CSV, вероятная причина, по которой вы их не нашли, заключается в том, что это чертовски банально. Помните, что CSV - это просто значения, разделенные запятыми.
Для его реализации используйте любые средства, чтобы написать текстовый файл (std::ofstream, QFile, QTextStream) и сделать что-то вроде:
foreach record
{
foreach value in record
{
write "\"" + escape(value) + "\""
if not last value in record
{
write ","
}
}
write "\n"
}
escape (value)
{
replace each "\"" with "\"\""
}
Обратите внимание, что вы можете писать значения без кавычек, если они не содержат разделителей (,). Также обратите внимание, что вы можете использовать разные разделители, например, обычно используется точка с запятой.