createText($valueSingle); $plainMulti = new RichText(); $plainMulti->createText($valueMulti); $richSingle = new RichText(); $font = $richSingle->createTextRun($valueSingle)->getFont(); self::assertNotNull($font); $font->setBold(true); $richMultiSimple = new RichText(); $font = $richMultiSimple->createTextRun($valueMulti)->getFont(); self::assertNotNull($font); $font->setBold(true); $richMultiMixed = new RichText(); $richMultiMixed->createText('I am' . PHP_EOL); $font = $richMultiMixed->createTextRun('multi-line')->getFont(); self::assertNotNull($font); $font->setBold(true); $richMultiMixed->createText(PHP_EOL . 'comment!'); $richMultiMixed = new RichText(); $richMultiMixed->createText('I am' . PHP_EOL); $font = $richMultiMixed->createTextRun('multi-line')->getFont(); self::assertNotNull($font); $font->setBold(true); $richMultiMixed->createText(PHP_EOL . 'comment!'); $scriptTextSingle = 'I am '; $scriptSingle = new RichText(); $scriptSingle->createText($scriptTextSingle); return [ 'single line plain text' => [$plainSingle, '
' . 'I am comment.
' . PHP_EOL . 'Comment'], 'multi-line plain text' => [$plainMulti, '
' . 'I am
' . PHP_EOL . 'multi-line
' . PHP_EOL . 'comment.
' . PHP_EOL . 'Comment'], 'single line simple rich text' => [$richSingle, '
' . "I am comment.
" . PHP_EOL . 'Comment'], 'multi-line simple rich text' => [$richMultiSimple, '
' . "I am
" . PHP_EOL . 'multi-line
' . PHP_EOL . 'comment.
' . PHP_EOL . 'Comment'], 'multi-line mixed rich text' => [$richMultiMixed, '
I am
' . PHP_EOL . "multi-line
" . PHP_EOL . 'comment!
' . PHP_EOL . 'Comment'], 'script single' => [$scriptSingle, '
' . 'I am <script>alert("Hello")</script>
' . PHP_EOL . 'Comment'], ]; } #[DataProvider('providerCommentRichText')] public function testComments(RichText $richText, string $expected): void { $spreadsheet = new Spreadsheet(); $spreadsheet->getActiveSheet() ->getCell('A1') ->setValue('Comment'); $spreadsheet->getActiveSheet() ->getComment('A1') ->setText($richText); $writer = new Html($spreadsheet); $writer->setLineEnding(PHP_EOL); $output = $writer->generateHtmlAll(); self::assertStringContainsString($expected, $output); $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Html'); $spreadsheet->disconnectWorksheets(); $actual = $reloadedSpreadsheet->getActiveSheet()->getComment('A1')->getText()->getPlainText(); self::assertSame($richText->getPlainText(), $actual); $reloadedSpreadsheet->disconnectWorksheets(); } }