Wt examples
3.3.0
|
#include <iostream>
Go to the source code of this file.
Namespaces | |
namespace | Wt |
Functions | |
void | readFromCsv (std::istream &f, Wt::WAbstractItemModel *model, int numRows=-1, bool firstLineIsHeaders=true) |
Wt::WStandardItemModel * | csvToModel (const std::string &csvFile, Wt::WObject *parent) |
Wt::WStandardItemModel* csvToModel | ( | const std::string & | csvFile, |
Wt::WObject * | parent | ||
) |
Definition at line 12 of file CsvUtil.C.
{ std::ifstream f(csvFile.c_str()); if (f) { Wt::WStandardItemModel *result = new Wt::WStandardItemModel(0, 0, parent); readFromCsv(f, result); return result; } else return 0; }
void readFromCsv | ( | std::istream & | f, |
Wt::WAbstractItemModel * | model, | ||
int | numRows = -1 , |
||
bool | firstLineIsHeaders = true |
||
) |
Definition at line 25 of file CsvUtil.C.
{ int csvRow = 0; while (f) { std::string line; getline(f, line); if (f) { typedef boost::tokenizer<boost::escaped_list_separator<char> > CsvTokenizer; CsvTokenizer tok(line); int col = 0; for (CsvTokenizer::iterator i = tok.begin(); i != tok.end(); ++i, ++col) { if (col >= model->columnCount()) model->insertColumns(model->columnCount(), col + 1 - model->columnCount()); if (firstLineIsHeaders && csvRow == 0) model->setHeaderData(col, boost::any(Wt::WString::fromUTF8(*i))); else { int dataRow = firstLineIsHeaders ? csvRow - 1 : csvRow; if (numRows != -1 && dataRow >= numRows) return; if (dataRow >= model->rowCount()) model->insertRows(model->rowCount(), dataRow + 1 - model->rowCount()); std::string s = *i; boost::any data; char *end; int i = std::strtol(s.c_str(), &end, 10); if (*end == 0) data = boost::any(i); else { double d = std::strtod(s.c_str(), &end); if (*end == 0) data = boost::any(d); else data = boost::any(Wt::WString::fromUTF8(s)); } model->setData(dataRow, col, data); } } } ++csvRow; } }