1 #include "csvmodelwriter.h"
3 #include <QAbstractItemModel>
7 CSVModelWriter::CSVModelWriter(const QString &filename, QObject *parent) :
9 filename(filename), model(0)
13 void CSVModelWriter::setModel(const QAbstractItemModel *model)
18 void CSVModelWriter::addColumn(const QString &title, int column, int role)
28 static void writeValue(QTextStream &f, const QString &value)
30 QString escaped = value;
31 escaped.replace('"', "\"\"");
32 f << "\"" << escaped << "\"";
35 static void writeSep(QTextStream &f)
40 static void writeNewline(QTextStream &f)
45 bool CSVModelWriter::write()
48 if(!file.open(QIODevice::WriteOnly | QIODevice::Text))
50 QTextStream out(&file);
55 numRows = model->rowCount();
59 for(int i=0; i<columns.size(); ++i)
65 writeValue(out, columns[i].title);
70 for(int j=0; j<numRows; ++j)
72 for(int i=0; i<columns.size(); ++i)
78 QVariant data = model->index(j, columns[i].column).data(columns[i].role);
79 writeValue(out, data.toString());
86 return file.error() == QFile::NoError;