8 #include <boost/tokenizer.hpp> 10 #include <Wt/WAbstractItemModel> 16 int numRows,
bool firstLineIsHeaders)
25 typedef boost::tokenizer<boost::escaped_list_separator<char> >
27 CsvTokenizer tok(line);
30 for (CsvTokenizer::iterator i = tok.begin();
31 i != tok.end(); ++i, ++col) {
37 if (firstLineIsHeaders && csvRow == 0)
40 int dataRow = firstLineIsHeaders ? csvRow - 1 : csvRow;
42 if (numRows != -1 && dataRow >= numRows)
57 double d = strtod(s.c_str(), &endptr);
64 model->
setData(dataRow, col, data);
virtual bool insertColumns(int column, int count, const WModelIndex &parent=WModelIndex())
static WString fromUTF8(const std::string &value, bool checkValid=false)
virtual bool insertRows(int row, int count, const WModelIndex &parent=WModelIndex())
virtual bool setData(const WModelIndex &index, const cpp17::any &value, ItemDataRole role=ItemDataRole::Edit)
virtual int rowCount(const WModelIndex &parent=WModelIndex()) const=0
virtual int columnCount(const WModelIndex &parent=WModelIndex()) const=0
virtual bool setHeaderData(int section, Orientation orientation, const cpp17::any &value, ItemDataRole role=ItemDataRole::Edit)
void readFromCsv(std::istream &f, Wt::WAbstractItemModel *model, int numRows, bool firstLineIsHeaders)
Utility function that reads a model from a CSV file.