CallbackTest.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Writer\Html;
  3. use PhpOffice\PhpSpreadsheet\Shared\File;
  4. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  5. use PhpOffice\PhpSpreadsheet\Writer\Html;
  6. use PhpOffice\PhpSpreadsheetTests\Functional;
  7. class CallbackTest extends Functional\AbstractFunctional
  8. {
  9. public function yellowBody(string $html): string
  10. {
  11. $newstyle = <<<EOF
  12. <style type='text/css'>
  13. body {
  14. background-color: yellow;
  15. }
  16. </style>
  17. EOF;
  18. return preg_replace('~</head>~', "$newstyle</head>", $html) ?? '';
  19. }
  20. public function testSetAndReset(): void
  21. {
  22. $spreadsheet = new Spreadsheet();
  23. $sheet = $spreadsheet->getActiveSheet();
  24. $sheet->setCellValue('A1', '1');
  25. $writer = new Html($spreadsheet);
  26. $html1 = $writer->generateHTMLall();
  27. $writer->setEditHtmlCallback([$this, 'yellowBody']);
  28. $html2 = $writer->generateHTMLall();
  29. $writer->setEditHtmlCallback(null);
  30. $html3 = $writer->generateHTMLall();
  31. self::assertFalse(strpos($html1, 'background-color: yellow'));
  32. self::assertNotFalse(strpos($html2, 'background-color: yellow'));
  33. self::assertFalse(strpos($html3, 'background-color: yellow'));
  34. self::assertEquals($html3, $html1);
  35. $writer->setEditHtmlCallback([$this, 'yellowBody']);
  36. $oufil = File::temporaryFilename();
  37. $writer->save($oufil);
  38. $html4 = file_get_contents($oufil);
  39. unlink($oufil);
  40. self::assertNotFalse($html4);
  41. self::assertNotFalse(strpos($html4, 'background-color: yellow'));
  42. $this->writeAndReload($spreadsheet, 'Html');
  43. }
  44. }