在 qt 中创建.csv C++文件

Create .csv file in C++ in qt

本文关键字:C++ 文件 csv 创建 qt      更新时间:2023-10-16

我想使用c ++创建一个csv文件,使用Qt作为应用程序和UI框架。是否有 csv 文件的库。

尝试 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;
}

我试图让它小巧易用。有关库文档和其他代码示例,请参阅自述文件。

你基本上可以查看libqxt。

使用 QxtCsvModel

QxtCsvModel [libqxt.bitbucket.org] 类为 CSV 文件提供 QAbstractTableModel [qt-project.org]。这可能是读取和写入csv文件的最简单方法,而无需将csv格式解析为qt可以理解的内容。它就像使用一行代码一样简单,例如,以下内容读取 csv 文件:

csvmodel->setSource(fileName);

只是写CSV?尽管谷歌可能会透露一些CSV库,但您没有找到任何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 """"
}

请注意,如果值不包含任何分隔符 (,),则可以编写不带引号的值。 另请注意,您可以使用不同的分隔符,例如通常使用分号。