1 #include "csvmodelwriter.h"
3 #include <QAbstractItemModel>
7 CSVModelWriter::CSVModelWriter(const QString &filename, QObject *parent) :
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 // TODO: quoting if " or \n in string
31 f << "\"" << value << "\"";
34 static void writeSep(QTextStream &f)
39 static void writeNewline(QTextStream &f)
44 bool CSVModelWriter::write()
47 if(!file.open(QIODevice::WriteOnly | QIODevice::Text))
49 QTextStream out(&file);
51 int numRows = model->rowCount();
54 for(int i=0; i<columns.size(); ++i)
60 writeValue(out, columns[i].title);
65 for(int j=0; j<numRows; ++j)
67 for(int i=0; i<columns.size(); ++i)
73 QVariant data = model->index(j, columns[i].column).data(columns[i].role);
74 writeValue(out, data.toString());
81 return file.error() == QFile::NoError;