From 6572e713bf48de8e1e09670143584e4d60e2b3a7 Mon Sep 17 00:00:00 2001 From: Alexey Rehov Date: Fri, 24 Mar 2017 13:37:28 +0200 Subject: [PATCH] Added check whether writer is opened before trying to close book. Fixes #392. --- src/Spout/Writer/XLSX/Writer.php | 2 +- tests/Spout/Writer/XLSX/WriterTest.php | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/Spout/Writer/XLSX/Writer.php b/src/Spout/Writer/XLSX/Writer.php index 965955a..1a6ad3f 100644 --- a/src/Spout/Writer/XLSX/Writer.php +++ b/src/Spout/Writer/XLSX/Writer.php @@ -125,7 +125,7 @@ class Writer extends AbstractMultiSheetsWriter */ protected function closeWriter() { - if ($this->book) { + if ($this->book && $this->isWriterOpened) { $this->book->close($this->filePointer); } } diff --git a/tests/Spout/Writer/XLSX/WriterTest.php b/tests/Spout/Writer/XLSX/WriterTest.php index 562db8d..1a66688 100644 --- a/tests/Spout/Writer/XLSX/WriterTest.php +++ b/tests/Spout/Writer/XLSX/WriterTest.php @@ -490,6 +490,19 @@ class WriterTest extends \PHPUnit_Framework_TestCase $this->assertEquals('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', $finfo->file($resourcePath)); } + /** + * @return void + */ + public function testCloseIsNotAppliedWhenWriterIsNotOpened() + { + /** @var \Box\Spout\Writer\XLSX\Writer $writer */ + $writer = WriterFactory::create(Type::XLSX); + $writer->openToFile('test_close.xlsx'); + $writer->addRow(['foo']); + $writer->close(); + $writer->close(); + } + /** * @param array $allRows * @param string $fileName