RichTextTest.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Reader\Xlsx;
  3. use PhpOffice\PhpSpreadsheet\RichText\RichText;
  4. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  5. use PhpOffice\PhpSpreadsheetTests\Functional\AbstractFunctional;
  6. class RichTextTest extends AbstractFunctional
  7. {
  8. public function testRichTextColors(): void
  9. {
  10. $spreadsheetOld = new Spreadsheet();
  11. $sheet = $spreadsheetOld->getActiveSheet();
  12. $richText = new RichText();
  13. $part1 = $richText->createTextRun('Red');
  14. $font1 = $part1->getFont();
  15. if ($font1 !== null) {
  16. $font1->setName('Courier New');
  17. $font1->getColor()->setArgb('FFFF0000');
  18. }
  19. $part2 = $richText->createTextRun('Blue');
  20. $font2 = $part2->getFont();
  21. if ($font2 !== null) {
  22. $font2->setName('Times New Roman');
  23. $font2->setItalic(true);
  24. $font2->getColor()->setArgb('FF0000FF');
  25. }
  26. $sheet->setCellValue('A1', $richText);
  27. $spreadsheet = $this->writeAndReload($spreadsheetOld, 'Xlsx');
  28. $spreadsheetOld->disconnectWorksheets();
  29. $rsheet = $spreadsheet->getActiveSheet();
  30. $value = $rsheet->getCell('A1')->getValue();
  31. if ($value instanceof RichText) {
  32. $elements = $value->getRichTextElements();
  33. self::assertCount(2, $elements);
  34. $font1a = $elements[0]->getFont();
  35. $font2a = $elements[1]->getFont();
  36. self::assertNotNull($font1a);
  37. self::assertNotNull($font2a);
  38. self::assertSame('Courier New', $font1a->getName());
  39. self::assertSame('FFFF0000', $font1a->getColor()->getArgb());
  40. self::assertFalse($font1a->getItalic());
  41. self::assertSame('Times New Roman', $font2a->getName());
  42. self::assertSame('FF0000FF', $font2a->getColor()->getArgb());
  43. self::assertTrue($font2a->getItalic());
  44. } else {
  45. self::fail('Did not see expected RichText');
  46. }
  47. $spreadsheet->disconnectWorksheets();
  48. }
  49. }