format = $format; switch($format) { case self::FORMAT_CSV: /** @var Writer\CSV\Writer $writer */ $writer = WriterFactory::create(Type::CSV); $writer->setFieldDelimiter(';') ->setShouldAddBOM(false); break; case self::FORMAT_ODS: /** @var Writer\ODS\Writer $writer */ $writer = WriterFactory::create(Type::ODS); break; case self::FORMAT_XLSX: /** @var Writer\XLSX\Writer $writer */ $writer = WriterFactory::create(Type::XLSX); break; default: throw new \InvalidArgumentException(sprintf("format \"%s\" is not handled by Spout")); break; } $writer->openToBrowser($filename); $this->writer = $writer; } public function __destruct() { $this->writer->close(); } public function getActiveSheet() { if($this->format == self::FORMAT_CSV) { return "_unique_sheet_"; } /** @var Writer\XLSX\Writer $w */ $w = $this->writer; $sheetIndex = $w->getCurrentSheet()->getIndex(); return $sheetIndex; } public function addRow($row) { $this->writer->addRow($row); } public function render() { $this->writer->close(); } public function getWriter() { return $this->writer; } }