XmlStylesTest.php 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Reader\Xml;
  3. use PhpOffice\PhpSpreadsheet\Reader\Xml;
  4. use PhpOffice\PhpSpreadsheet\Style\Alignment;
  5. use PhpOffice\PhpSpreadsheet\Style\Border;
  6. use PhpOffice\PhpSpreadsheet\Style\Borders;
  7. use PhpOffice\PhpSpreadsheet\Style\Color;
  8. use PhpOffice\PhpSpreadsheet\Style\Fill;
  9. use PhpOffice\PhpSpreadsheet\Style\Font;
  10. use PHPUnit\Framework\TestCase;
  11. class XmlStylesTest extends TestCase
  12. {
  13. public function testBorders(): void
  14. {
  15. $filename = __DIR__
  16. . '/../../../..'
  17. . '/samples/templates/excel2003.xml';
  18. $reader = new Xml();
  19. $spreadsheet = $reader->load($filename);
  20. $sheet = $spreadsheet->getSheet(0);
  21. self::assertEquals(Border::BORDER_MEDIUM, $sheet->getCell('C10')->getStyle()->getBorders()->getTop()->getBorderStyle());
  22. self::assertEquals(Border::BORDER_NONE, $sheet->getCell('C10')->getStyle()->getBorders()->getRight()->getBorderStyle());
  23. self::assertEquals(Border::BORDER_NONE, $sheet->getCell('C10')->getStyle()->getBorders()->getBottom()->getBorderStyle());
  24. self::assertEquals(Border::BORDER_NONE, $sheet->getCell('C10')->getStyle()->getBorders()->getLeft()->getBorderStyle());
  25. self::assertEquals(Border::BORDER_NONE, $sheet->getCell('C12')->getStyle()->getBorders()->getTop()->getBorderStyle());
  26. self::assertEquals(Border::BORDER_NONE, $sheet->getCell('C12')->getStyle()->getBorders()->getRight()->getBorderStyle());
  27. self::assertEquals(Border::BORDER_MEDIUM, $sheet->getCell('C12')->getStyle()->getBorders()->getBottom()->getBorderStyle());
  28. self::assertEquals(Border::BORDER_NONE, $sheet->getCell('C12')->getStyle()->getBorders()->getLeft()->getBorderStyle());
  29. self::assertEquals(Border::BORDER_NONE, $sheet->getCell('C14')->getStyle()->getBorders()->getTop()->getBorderStyle());
  30. self::assertEquals(Border::BORDER_NONE, $sheet->getCell('C14')->getStyle()->getBorders()->getRight()->getBorderStyle());
  31. self::assertEquals(Border::BORDER_NONE, $sheet->getCell('C14')->getStyle()->getBorders()->getBottom()->getBorderStyle());
  32. self::assertEquals(Border::BORDER_MEDIUM, $sheet->getCell('C14')->getStyle()->getBorders()->getLeft()->getBorderStyle());
  33. self::assertEquals(Border::BORDER_NONE, $sheet->getCell('C16')->getStyle()->getBorders()->getTop()->getBorderStyle());
  34. self::assertEquals(Border::BORDER_MEDIUM, $sheet->getCell('C16')->getStyle()->getBorders()->getRight()->getBorderStyle());
  35. self::assertEquals(Border::BORDER_NONE, $sheet->getCell('C16')->getStyle()->getBorders()->getBottom()->getBorderStyle());
  36. self::assertEquals(Border::BORDER_NONE, $sheet->getCell('C16')->getStyle()->getBorders()->getLeft()->getBorderStyle());
  37. self::assertEquals(Border::BORDER_THICK, $sheet->getCell('C18')->getStyle()->getBorders()->getTop()->getBorderStyle());
  38. self::assertEquals(Color::COLOR_RED, $sheet->getCell('C18')->getStyle()->getBorders()->getTop()->getColor()->getARGB());
  39. self::assertEquals(Border::BORDER_THICK, $sheet->getCell('C18')->getStyle()->getBorders()->getRight()->getBorderStyle());
  40. self::assertEquals(Color::COLOR_YELLOW, $sheet->getCell('C18')->getStyle()->getBorders()->getRight()->getColor()->getARGB());
  41. self::assertEquals(Border::BORDER_THICK, $sheet->getCell('C18')->getStyle()->getBorders()->getRight()->getBorderStyle());
  42. self::assertEquals(Border::BORDER_NONE, $sheet->getCell('C18')->getStyle()->getBorders()->getBottom()->getBorderStyle());
  43. self::assertEquals(Border::BORDER_NONE, $sheet->getCell('C18')->getStyle()->getBorders()->getLeft()->getBorderStyle());
  44. self::assertEquals(Borders::DIAGONAL_BOTH, $sheet->getCell('E18')->getStyle()->getBorders()->getDiagonalDirection());
  45. self::assertEquals(Borders::DIAGONAL_DOWN, $sheet->getCell('I18')->getStyle()->getBorders()->getDiagonalDirection());
  46. self::assertEquals(Borders::DIAGONAL_UP, $sheet->getCell('J18')->getStyle()->getBorders()->getDiagonalDirection());
  47. }
  48. public function testFont(): void
  49. {
  50. $filename = __DIR__
  51. . '/../../../..'
  52. . '/samples/templates/excel2003.xml';
  53. $reader = new Xml();
  54. $spreadsheet = $reader->load($filename);
  55. $sheet = $spreadsheet->getSheet(0);
  56. self::assertEquals('FFFF0000', $sheet->getCell('A1')->getStyle()->getFont()->getColor()->getARGB());
  57. self::assertEquals(Font::UNDERLINE_SINGLE, $sheet->getCell('A3')->getStyle()->getFont()->getUnderline());
  58. self::assertTrue($sheet->getCell('E1')->getStyle()->getFont()->getBold());
  59. self::assertTrue($sheet->getCell('E1')->getStyle()->getFont()->getItalic());
  60. self::assertFalse($sheet->getCell('E2')->getStyle()->getFont()->getBold());
  61. self::assertFalse($sheet->getCell('E2')->getStyle()->getFont()->getItalic());
  62. self::assertEquals(Font::UNDERLINE_NONE, $sheet->getCell('E2')->getStyle()->getFont()->getUnderline());
  63. self::assertTrue($sheet->getCell('E3')->getStyle()->getFont()->getBold());
  64. self::assertFalse($sheet->getCell('E3')->getStyle()->getFont()->getItalic());
  65. self::assertEquals(Font::UNDERLINE_NONE, $sheet->getCell('E3')->getStyle()->getFont()->getUnderline());
  66. self::assertFalse($sheet->getCell('E4')->getStyle()->getFont()->getBold());
  67. self::assertTrue($sheet->getCell('E4')->getStyle()->getFont()->getItalic());
  68. self::assertEquals(Font::UNDERLINE_NONE, $sheet->getCell('E4')->getStyle()->getFont()->getUnderline());
  69. self::assertTrue($sheet->getCell('F1')->getStyle()->getFont()->getBold());
  70. self::assertFalse($sheet->getCell('F1')->getStyle()->getFont()->getItalic());
  71. self::assertEquals(Font::UNDERLINE_NONE, $sheet->getCell('F1')->getStyle()->getFont()->getUnderline());
  72. self::assertFalse($sheet->getCell('F2')->getStyle()->getFont()->getBold());
  73. self::assertFalse($sheet->getCell('F2')->getStyle()->getFont()->getItalic());
  74. self::assertEquals(Font::UNDERLINE_NONE, $sheet->getCell('F2')->getStyle()->getFont()->getUnderline());
  75. self::assertTrue($sheet->getCell('F3')->getStyle()->getFont()->getBold());
  76. self::assertTrue($sheet->getCell('F3')->getStyle()->getFont()->getItalic());
  77. self::assertEquals(Font::UNDERLINE_NONE, $sheet->getCell('F3')->getStyle()->getFont()->getUnderline());
  78. self::assertFalse($sheet->getCell('F4')->getStyle()->getFont()->getBold());
  79. self::assertFalse($sheet->getCell('F4')->getStyle()->getFont()->getItalic());
  80. self::assertEquals(Font::UNDERLINE_NONE, $sheet->getCell('F4')->getStyle()->getFont()->getUnderline());
  81. self::assertEquals(45, $sheet->getCell('E22')->getStyle()->getAlignment()->getTextRotation());
  82. self::assertEquals(-90, $sheet->getCell('G22')->getStyle()->getAlignment()->getTextRotation());
  83. self::assertEquals(Border::BORDER_DOUBLE, $sheet->getCell('N13')->getStyle()->getBorders()->getBottom()->getBorderStyle());
  84. self::assertEquals(Font::UNDERLINE_DOUBLE, $sheet->getCell('A24')->getStyle()->getFont()->getUnderline());
  85. self::assertTrue($sheet->getCell('B23')->getStyle()->getFont()->getSubScript());
  86. self::assertTrue($sheet->getCell('B24')->getStyle()->getFont()->getSuperScript());
  87. }
  88. public function testFill(): void
  89. {
  90. $filename = __DIR__
  91. . '/../../../..'
  92. . '/samples/templates/excel2003.xml';
  93. $reader = new Xml();
  94. $spreadsheet = $reader->load($filename);
  95. $sheet = $spreadsheet->getSheet(0);
  96. self::assertEquals(Fill::FILL_PATTERN_DARKHORIZONTAL, $sheet->getCell('K19')->getStyle()->getFill()->getFillType());
  97. self::assertEquals('FF00CCFF', $sheet->getCell('K19')->getStyle()->getFill()->getEndColor()->getARGB());
  98. self::assertEquals(Color::COLOR_BLUE, $sheet->getCell('K19')->getStyle()->getFill()->getStartColor()->getARGB());
  99. self::assertEquals(Fill::FILL_PATTERN_GRAY0625, $sheet->getCell('L19')->getStyle()->getFill()->getFillType());
  100. self::assertEquals(Color::COLOR_RED, $sheet->getCell('L19')->getStyle()->getFill()->getEndColor()->getARGB());
  101. self::assertEquals(Color::COLOR_YELLOW, $sheet->getCell('L19')->getStyle()->getFill()->getStartColor()->getARGB());
  102. self::assertEquals(Fill::FILL_SOLID, $sheet->getCell('K3')->getStyle()->getFill()->getFillType());
  103. self::assertEquals(Color::COLOR_RED, $sheet->getCell('K3')->getStyle()->getFill()->getEndColor()->getARGB());
  104. }
  105. public function testAlignment(): void
  106. {
  107. $filename = __DIR__
  108. . '/../../../..'
  109. . '/samples/templates/excel2003.xml';
  110. $reader = new Xml();
  111. $spreadsheet = $reader->load($filename);
  112. $sheet = $spreadsheet->getSheet(0);
  113. self::assertEquals(45, $sheet->getCell('E22')->getStyle()->getAlignment()->getTextRotation());
  114. self::assertEquals(-90, $sheet->getCell('G22')->getStyle()->getAlignment()->getTextRotation());
  115. self::assertEquals(Alignment::HORIZONTAL_CENTER, $sheet->getCell('N2')->getStyle()->getAlignment()->getHorizontal());
  116. self::assertEquals(Alignment::HORIZONTAL_RIGHT, $sheet->getCell('N3')->getStyle()->getAlignment()->getHorizontal());
  117. self::assertEquals(Alignment::VERTICAL_TOP, $sheet->getCell('K19')->getStyle()->getAlignment()->getVertical());
  118. }
  119. }