outputFilename !== '') { unlink($this->outputFilename); $this->outputFilename = ''; } } public function testBackgroundImage(): void { $this->outputFilename = File::temporaryFilename(); $testString = "\"He\": ''"; $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); $sheet->getCell('A1')->setValueExplicit($testString, DataType::TYPE_INLINE); $sheet->getCell('A2')->setValue($testString); $richText = new RichText(); $richText->addText(new TextElement($testString)); $sheet->getCell('A3')->setValue($richText); $writer = new XlsxWriter($spreadsheet); $writer->save($this->outputFilename); $spreadsheet->disconnectWorksheets(); $reader = new XlsxReader(); $reloadedSpreadsheet = $reader->load($this->outputFilename); $rsheet = $reloadedSpreadsheet->getActiveSheet(); self::assertSame($testString, $rsheet->getCell('A1')->getValueString()); self::assertSame($testString, $rsheet->getCell('A2')->getValueString()); self::assertSame($testString, $rsheet->getCell('A3')->getValueString()); $reloadedSpreadsheet->disconnectWorksheets(); $file = 'zip://'; $file .= $this->outputFilename; $file .= '#xl/worksheets/sheet1.xml'; $data = file_get_contents($file); // expected, and expected1/2 below, do not escape apostrophes $expected = 't="inlineStr">"He": \'<?>\''; if ($data === false) { self::fail('Unable to read worksheets file'); } else { self::assertStringContainsString($expected, $data, 'inline string'); } $file = 'zip://'; $file .= $this->outputFilename; $file .= '#xl/sharedStrings.xml'; $data = file_get_contents($file); $expected1 = '"He": \'<?>\''; $expected2 = '"He": \'<?>\''; if ($data === false) { self::fail('Unable to read sharedStrings file'); } else { self::assertStringContainsString($expected1, $data, 'string'); self::assertStringContainsString($expected2, $data, 'rich text'); } } }