Csv

Open csv resource

Csv resource can be used to map data into a CSV format.

Example

Return multidimensional array (array[row][col]=value) as CSV file:

$this->get('csv')
    ->setFilename('myfile.csv')
    ->setData($dataArray)
    ->outputFile();

Write data to CSV file

Create $Csv. Then iterate through the set of pages and add selected values to csv data. Lastly, return data as csv file:

$Csv = $this->get('csv')->setFilename('testname.csv');

foreach ( $Pages as $Page ){
    $Csv->addRow(
        $Page->name,
        $Page->price
    );
}

$Csv->outputFile();

Setting the data one cell at a time:

foreach ( $Pages as $Page ){
    $Csv->newRow();
    $Csv->addColumn($Page->name);
    $Csv->addColumn($Page->price);
}

Setting delimiters. Default delimiter is ; and enclosure "

$Csv->setDelimiter(',');
$Csv->setEnclosure('"');

Setting colums:

  $Csv->addColumn('Määrä','number'); // value is formatted as number
  $Csv->addColumn('Päivä','date'); // value is formatted as date

  $Csv->addColumn(Array(
      'title' => 'Määrä', // Column title
      'name'  => 'amount', // Column name. Map associative data.
      'type' => 'number', // number, string, date.
      'default' => 'X', // Value to use if empty value.
      'pad_length' => 10, // Fixed column char length
      'pad_string' => '-', // String to use when making pad_length
      'pad_type' => 'left', // Add pad string to left/right of the content
      'hidden' => false // If TRUE, column is not added to file
  ));

Fixed length columns:

$Csv->setDelimiter(''); // Do not add delimiter char
$Csv->setEnclosure(''); // Do not add eclosure chars

$Csv->setPadString(" "); // Default padding char
$Csv->setPadType("left"); // Default padding type

$Csv->addColumn(Array(
    'pad_length' => 10, // Make content at least 10 char length
    'pad_type' => 'right', // Override default pad type
    'pad_string' => 'x' // Override default char
));

Read data from CSV file

Set filename. File will be parsed when you ask data from it:

$data = $this->get('csv')->setFilename('testname.csv')->getData();

You can use additional parameters:

$Csv = $this->get('csv')
    ->setFilename('testname.csv')
    ->setDelimiter(',')
    ->setEnclosure('"')
    ->setLinebreak("CR")
    ->setEmptyString("")
    ->setPadString(" ")
    ->setPadType("left");

$Data = $Csv->getData();

Full method list

Create

Method Return type Description
setFilename(string) this Set output filename.
getFilename() string Return the set output filename.
setDelimiter(string) this  Set cell delimiter, Default: ,
setEnclosure(string) this  Set cell enclosure, Default: "
setLinebreak(string) this  Set row linebreak, Default:
setCellbreak(string) this  Set linebreak inside cell data. Default: space
setEmptyString(string) this Value to use when empty cell
setPadString(strtig) this String to use when padding column to pad_length
setPadType(type) this Add pad strings to right/left
setLocale(string) this Set locale for date/number format
setColumns(array) this Clear columsn and add column definitions.
addColumn(string/array) this Set column definition

Set data

Method Return type Description
setContent(array) this Clear data and add data from two dimensional array.
addContent(array) this Add data from array.
clearContent() this Clear data.
setData(array) this Set 2-dimensional array.
addData(array) this Add 2-dimensional array
newRow() this Add new empty line.
addRow(array) this Add new row from array.
addRow(col1,col2,..) this Add new row from arguments.
addCell(data) this Add new cell to last line.

Get data

Method Return type Description
getData() array Return the data as two dimensional array.
getRowIndex() int Return the index of last row.
isRows() int Return TRUE if there are any data.
countRows() int Return number of lines.
countCols() int Return max number of cols.
getContent() string Return the csv content.
outputFile() void Send CSV file to browser.
saveToFile(filename) this Save data to file.