8 #include <boost/tokenizer.hpp> 10 #include <Wt/WAbstractItemModel> 15 void readFromCsv(std::istream& f, Wt::WAbstractItemModel *model,
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) {
33 if (col >= model->columnCount())
34 model->insertColumns(model->columnCount(),
35 col + 1 - model->columnCount());
37 if (firstLineIsHeaders && csvRow == 0)
38 model->setHeaderData(col, boost::any(Wt::WString::fromUTF8(*i)));
40 int dataRow = firstLineIsHeaders ? csvRow - 1 : csvRow;
42 if (numRows != -1 && dataRow >= numRows)
45 if (dataRow >= model->rowCount())
46 model->insertRows(model->rowCount(),
47 dataRow + 1 - model->rowCount());
57 double d = strtod(s.c_str(), &endptr);
61 data = boost::any(Wt::WString::fromUTF8(s));
64 model->setData(dataRow, col, data);
void readFromCsv(std::istream &f, Wt::WAbstractItemModel *model, int numRows, bool firstLineIsHeaders)
Utility function that reads a model from a CSV file.