Wt examples  3.3.4
Namespaces | Functions
CsvUtil.h File Reference
#include <iostream>

Go to the source code of this file.

Namespaces

 Wt
 

Functions

void readFromCsv (std::istream &f, Wt::WAbstractItemModel *model, int numRows=-1, bool firstLineIsHeaders=true)
 
Wt::WStandardItemModelcsvToModel (const std::string &csvFile, Wt::WObject *parent, bool firstLineIsHeader=true)
 

Function Documentation

Wt::WStandardItemModel* csvToModel ( const std::string &  csvFile,
Wt::WObject parent,
bool  firstLineIsHeader = true 
)

Definition at line 40 of file CsvUtil.C.

43 {
44  std::ifstream f(csvFile.c_str());
45 
46  if (f) {
47  Wt::WStandardItemModel *result = new Wt::WStandardItemModel(0, 0, parent);
48  result->setItemPrototype(new NumericItem());
49  readFromCsv(f, result, -1, firstLineIsHeaders);
50  return result;
51  } else
52  return 0;
53 }
void setItemPrototype(WStandardItem *item)
void readFromCsv(std::istream &f, Wt::WAbstractItemModel *model, int numRows, bool firstLineIsHeaders)
Utility function that reads a model from a CSV file.
Definition: CsvUtil.C:55
void readFromCsv ( std::istream &  f,
Wt::WAbstractItemModel model,
int  numRows = -1,
bool  firstLineIsHeaders = true 
)

Definition at line 55 of file CsvUtil.C.

57 {
58  int csvRow = 0;
59 
60  while (f) {
61  std::string line;
62  getline(f, line);
63 
64  if (f) {
65  typedef boost::tokenizer<boost::escaped_list_separator<char> >
66  CsvTokenizer;
67  CsvTokenizer tok(line);
68 
69  int col = 0;
70  for (CsvTokenizer::iterator i = tok.begin();
71  i != tok.end(); ++i, ++col) {
72 
73  if (col >= model->columnCount())
74  model->insertColumns(model->columnCount(),
75  col + 1 - model->columnCount());
76 
77  if (firstLineIsHeaders && csvRow == 0)
78  model->setHeaderData(col, boost::any(Wt::WString::fromUTF8(*i)));
79  else {
80  int dataRow = firstLineIsHeaders ? csvRow - 1 : csvRow;
81 
82  if (numRows != -1 && dataRow >= numRows)
83  return;
84 
85  if (dataRow >= model->rowCount())
86  model->insertRows(model->rowCount(),
87  dataRow + 1 - model->rowCount());
88 
89  boost::any data(Wt::WString::fromUTF8(*i));
90  model->setData(dataRow, col, data);
91  }
92  }
93  }
94 
95  ++csvRow;
96  }
97 }
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 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 boost::any &value, int role=EditRole)
virtual bool setData(const WModelIndex &index, const boost::any &value, int role=EditRole)

Generated on Thu Nov 12 2015 for the C++ Web Toolkit (Wt) by doxygen 1.8.11