Создавать.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 "\"\""
}

обратите внимание, что вы можете писать значения без кавычек, если они не содержат разделителей (,). Также обратите внимание, что вы можете использовать разные обычно используются разделители, например, двоеточие.