From 26e5f966fb28360b7d2127541e2e72ba4251cd52 Mon Sep 17 00:00:00 2001 From: Martin Wind Date: Sun, 29 Mar 2020 15:10:11 +0200 Subject: [PATCH] Use options manager for default row height and column width --- src/Spout/Writer/WriterMultiSheetsAbstract.php | 18 ++++++++++++------ .../Writer/XLSX/Manager/WorksheetManager.php | 17 ++++------------- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/src/Spout/Writer/WriterMultiSheetsAbstract.php b/src/Spout/Writer/WriterMultiSheetsAbstract.php index b349b04..1fb5ee9 100644 --- a/src/Spout/Writer/WriterMultiSheetsAbstract.php +++ b/src/Spout/Writer/WriterMultiSheetsAbstract.php @@ -142,22 +142,28 @@ abstract class WriterMultiSheetsAbstract extends WriterAbstract /** * @param float $width - * @throws WriterNotOpenedException + * @throws WriterAlreadyOpenedException */ public function setDefaultColumnWidth(float $width) { - $this->throwIfWorkbookIsNotAvailable(); - $this->workbookManager->setDefaultColumnWidth($width); + $this->throwIfWriterAlreadyOpened('Writer must be configured before opening it.'); + $this->optionsManager->setOption( + Options::DEFAULT_COLUMN_WIDTH, + $width + ); } /** * @param float $height - * @throws WriterNotOpenedException + * @throws WriterAlreadyOpenedException */ public function setDefaultRowHeight(float $height) { - $this->throwIfWorkbookIsNotAvailable(); - $this->workbookManager->setDefaultRowHeight($height); + $this->throwIfWriterAlreadyOpened('Writer must be configured before opening it.'); + $this->optionsManager->setOption( + Options::DEFAULT_ROW_HEIGHT, + $height + ); } /** diff --git a/src/Spout/Writer/XLSX/Manager/WorksheetManager.php b/src/Spout/Writer/XLSX/Manager/WorksheetManager.php index e430b3c..fe057d3 100644 --- a/src/Spout/Writer/XLSX/Manager/WorksheetManager.php +++ b/src/Spout/Writer/XLSX/Manager/WorksheetManager.php @@ -65,9 +65,6 @@ EOD; /** @var InternalEntityFactory Factory to create entities */ private $entityFactory; - /** @var bool Whether rows have been written */ - private $hasWrittenRows = false; - /** * WorksheetManager constructor. * @@ -122,6 +119,9 @@ EOD; $worksheet->setFilePointer($sheetFilePointer); \fwrite($sheetFilePointer, self::SHEET_XML_FILE_HEADER); + \fwrite($sheetFilePointer, $this->getXMLFragmentForDefaultCellSizing()); + \fwrite($sheetFilePointer, $this->getXMLFragmentForColumnWidths()); + \fwrite($sheetFilePointer, ''); } /** @@ -162,12 +162,6 @@ EOD; private function addNonEmptyRow(Worksheet $worksheet, Row $row) { $sheetFilePointer = $worksheet->getFilePointer(); - if (!$this->hasWrittenRows) { - fwrite($sheetFilePointer, $this->getXMLFragmentForDefaultCellSizing()); - fwrite($sheetFilePointer, $this->getXMLFragmentForColumnWidths()); - fwrite($sheetFilePointer, ''); - } - $rowStyle = $row->getStyle(); $rowIndexOneBased = $worksheet->getLastWrittenRowIndex() + 1; $numCells = $row->getNumCells(); @@ -185,7 +179,6 @@ EOD; if ($wasWriteSuccessful === false) { throw new IOException("Unable to write data in {$worksheet->getFilePath()}"); } - $this->hasWrittenRows = true; } /** @@ -324,9 +317,7 @@ EOD; return; } - if ($this->hasWrittenRows) { - \fwrite($worksheetFilePointer, ''); - } + \fwrite($worksheetFilePointer, ''); \fwrite($worksheetFilePointer, ''); \fclose($worksheetFilePointer); }