diff --git a/src/PhpSpreadsheet/Writer/Xlsx.php b/src/PhpSpreadsheet/Writer/Xlsx.php index 9e83fc1478..dcbbde72e5 100644 --- a/src/PhpSpreadsheet/Writer/Xlsx.php +++ b/src/PhpSpreadsheet/Writer/Xlsx.php @@ -249,6 +249,40 @@ public function getWriterPartWorksheet(): Worksheet return $this->writerPartWorksheet; } + public function createStyleDictionaries(): void + { + $this->styleHashTable->addFromSource( + $this->getWriterPartStyle()->allStyles( + $this->spreadSheet + ) + ); + $this->stylesConditionalHashTable->addFromSource( + $this->getWriterPartStyle()->allConditionalStyles( + $this->spreadSheet + ) + ); + $this->fillHashTable->addFromSource( + $this->getWriterPartStyle()->allFills( + $this->spreadSheet + ) + ); + $this->fontHashTable->addFromSource( + $this->getWriterPartStyle()->allFonts( + $this->spreadSheet + ) + ); + $this->bordersHashTable->addFromSource( + $this->getWriterPartStyle()->allBorders( + $this->spreadSheet + ) + ); + $this->numFmtHashTable->addFromSource( + $this->getWriterPartStyle()->allNumberFormats( + $this->spreadSheet + ) + ); + } + /** * Save PhpSpreadsheet to file. * @@ -275,12 +309,7 @@ public function save($filename, int $flags = 0): void } // Create styles dictionaries - $this->styleHashTable->addFromSource($this->getWriterPartStyle()->allStyles($this->spreadSheet)); - $this->stylesConditionalHashTable->addFromSource($this->getWriterPartStyle()->allConditionalStyles($this->spreadSheet)); - $this->fillHashTable->addFromSource($this->getWriterPartStyle()->allFills($this->spreadSheet)); - $this->fontHashTable->addFromSource($this->getWriterPartStyle()->allFonts($this->spreadSheet)); - $this->bordersHashTable->addFromSource($this->getWriterPartStyle()->allBorders($this->spreadSheet)); - $this->numFmtHashTable->addFromSource($this->getWriterPartStyle()->allNumberFormats($this->spreadSheet)); + $this->createStyleDictionaries(); // Create drawing dictionary $this->drawingHashTable->addFromSource($this->getWriterPartDrawing()->allDrawings($this->spreadSheet)); diff --git a/tests/PhpSpreadsheetTests/Writer/Xlsx/StylesWriterTest.php b/tests/PhpSpreadsheetTests/Writer/Xlsx/StylesWriterTest.php new file mode 100644 index 0000000000..e1da06dcb1 --- /dev/null +++ b/tests/PhpSpreadsheetTests/Writer/Xlsx/StylesWriterTest.php @@ -0,0 +1,27 @@ +createStyleDictionaries(); + $writerStyle = new XlsxWriter\Style($writer); + $data = $writerStyle->writeStyles($spreadsheet); + self::assertStringContainsString( + '', + $data + ); + $spreadsheet->disconnectWorksheets(); + } +}