This is the documentation for the unsupported version 7.0. Please consider upgrading your code to the latest stable version

Basic usage

Tips: Even though you can use the following methods with the League\Csv\Writer object. It is recommended to do so with the League\Csv\Reader class to avoid losing the file cursor position and getting unexpected results when inserting new data.

Once your CSV object is instantiated and configured, you can start interacting with the data using a number of methods available to you. For starters, you can iterate over your newly object to extract each CSV row using the foreach construct.

$reader = Reader::createFromPath('/path/to/my/file.csv', 'r');
foreach ($reader as $index => $row) {
    //do something meaningful here with $row !!
    //$row is an array where each item represent a CSV data cell
    //$index is the CSV row index

You can do more complex iterations using the query methods available on the League\Csv\Reader class only.</a>

Outputting the CSV


Use the echo construct on the instantiated object or use the __toString method to show the CSV full content.

echo $reader;
// or
echo $reader->__toString();

output($filename = null)

If you only wish to make your CSV downloadable by forcing a file download just use the output method to force the use of the output buffer on the CSV content.

Since version 7.0, the method returns the number of characters read from the handle and passed through to the output.

header('Content-Type: text/csv; charset=UTF-8');
header('Content-Disposition: attachment; filename="name-for-your-file.csv"');

The output method can take an optional argument $filename. When present you can even remove more headers.


The output methods can only be affected by:

No other method or property have effect on them.