CSV spreadsheet files are suitable for storing tabular data in a relatively portable way.

The CSV format is flexible but somewhat ill-defined.

For present purposes, authors may assume that the data fields contain no commas, backslashes, or quotation marks.



Task

Read a CSV file, change some values and save the changes back to a file.

For this task we will use the following CSV file:

C1,C2,C3,C4,C5
1,5,9,13,17
2,6,10,14,18
3,7,11,15,19
4,8,12,16,20

Suggestions


 Show how to add a column, headed 'SUM', of the sums of the rows.
 If possible, illustrate the use of built-in or standard functions, methods, or libraries, that handle generic CSV files.



import strutils, streams
 
let
  csv = newFileStream("data.csv", fmRead)
  outf = newFileStream("data-out.csv", fmWrite)
 
var lineNumber = 1
 
while true:
  if atEnd(csv):
    break
  var line = readLine(csv)
 
  if lineNumber == 1:
    line.add(",SUM")
  else:
    var sum = 0
    for n in split(line, ","):
      sum += parseInt(n)
    line.add(",")
    line.add($sum)
 
  outf.writeLine(line)
 
  inc lineNumber