fieldDelimiter = $fieldDelimiter; return $this; } /** * Sets the field enclosure for the CSV. * Needs to be called before opening the reader. * * @param string $fieldEnclosure Character that enclose fields * @return Reader */ public function setFieldEnclosure($fieldEnclosure) { $this->fieldEnclosure = $fieldEnclosure; return $this; } /** * Sets the encoding of the CSV file to be read. * Needs to be called before opening the reader. * * @param string $encoding Encoding of the CSV file to be read * @return Reader */ public function setEncoding($encoding) { $this->encoding = $encoding; return $this; } /** * Sets the EOL for the CSV. * Needs to be called before opening the reader. * * @param string $endOfLineCharacter used to properly get lines from the CSV file. * @return Reader */ public function setEndOfLineCharacter($endOfLineCharacter) { $this->endOfLineCharacter = $endOfLineCharacter; return $this; } /** * Opens the file at the given path to make it ready to be read. * If setEncoding() was not called, it assumes that the file is encoded in UTF-8. * * @param string $filePath Path of the CSV file to be read * @return void * @throws \Box\Spout\Common\Exception\IOException */ protected function openReader($filePath) { $this->filePointer = $this->globalFunctionsHelper->fopen($filePath, 'r'); if (!$this->filePointer) { throw new IOException("Could not open file $filePath for reading."); } $this->sheetIterator = new SheetIterator( $this->filePointer, $this->fieldDelimiter, $this->fieldEnclosure, $this->encoding, $this->endOfLineCharacter, $this->globalFunctionsHelper ); } /** * Returns an iterator to iterate over sheets. * * @return SheetIterator To iterate over sheets */ public function getConcreteSheetIterator() { return $this->sheetIterator; } /** * Closes the reader. To be used after reading the file. * * @return void */ protected function closeReader() { if ($this->filePointer) { $this->globalFunctionsHelper->fclose($this->filePointer); } } }