StyleTest.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Style;
  3. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  4. use PhpOffice\PhpSpreadsheet\Style\Fill;
  5. use PHPUnit\Framework\TestCase;
  6. class StyleTest extends TestCase
  7. {
  8. public function testStyleOddMethods(): void
  9. {
  10. $spreadsheet = new Spreadsheet();
  11. $sheet = $spreadsheet->getActiveSheet();
  12. $cellCoordinate = 'A1';
  13. $cell1 = $sheet->getCell($cellCoordinate);
  14. $cell1style = $cell1->getStyle();
  15. self::assertSame($spreadsheet, $cell1style->getParent());
  16. $styleArray = ['alignment' => ['textRotation' => 45]];
  17. $outArray = $cell1style->getStyleArray($styleArray);
  18. self::assertEquals($styleArray, $outArray['quotePrefix']);
  19. }
  20. public function testStyleColumn(): void
  21. {
  22. $spreadsheet = new Spreadsheet();
  23. $sheet = $spreadsheet->getActiveSheet();
  24. $cellCoordinates = 'A:B';
  25. $styleArray = [
  26. 'font' => [
  27. 'bold' => true,
  28. ],
  29. ];
  30. $sheet->getStyle($cellCoordinates)->applyFromArray($styleArray);
  31. $sheet->setCellValue('A1', 'xxxa1');
  32. $sheet->setCellValue('A2', 'xxxa2');
  33. $sheet->setCellValue('A3', 'xxxa3');
  34. $sheet->setCellValue('B1', 'xxxa1');
  35. $sheet->setCellValue('B2', 'xxxa2');
  36. $sheet->setCellValue('B3', 'xxxa3');
  37. $sheet->setCellValue('C1', 'xxxc1');
  38. $sheet->setCellValue('C2', 'xxxc2');
  39. $sheet->setCellValue('C3', 'xxxc3');
  40. $styleArray = [
  41. 'font' => [
  42. 'italic' => true,
  43. ],
  44. ];
  45. $sheet->getStyle($cellCoordinates)->applyFromArray($styleArray);
  46. self::assertTrue($sheet->getStyle('A1')->getFont()->getBold());
  47. self::assertTrue($sheet->getStyle('B2')->getFont()->getBold());
  48. self::assertFalse($sheet->getStyle('C3')->getFont()->getBold());
  49. self::assertTrue($sheet->getStyle('A1')->getFont()->getItalic());
  50. self::assertTrue($sheet->getStyle('B2')->getFont()->getItalic());
  51. self::assertFalse($sheet->getStyle('C3')->getFont()->getItalic());
  52. }
  53. public function testStyleIsReused(): void
  54. {
  55. $spreadsheet = new Spreadsheet();
  56. $sheet = $spreadsheet->getActiveSheet();
  57. $styleArray = [
  58. 'font' => [
  59. 'italic' => true,
  60. ],
  61. ];
  62. $sheet->getStyle('A1')->getFont()->setBold(true);
  63. $sheet->getStyle('A2')->getFont()->setBold(true);
  64. $sheet->getStyle('A3')->getFont()->setBold(true);
  65. $sheet->getStyle('A3')->getFont()->setItalic(true);
  66. $sheet->getStyle('A')->applyFromArray($styleArray);
  67. self::assertCount(4, $spreadsheet->getCellXfCollection());
  68. $spreadsheet->garbageCollect();
  69. self::assertCount(3, $spreadsheet->getCellXfCollection());
  70. }
  71. public function testStyleRow(): void
  72. {
  73. $spreadsheet = new Spreadsheet();
  74. $sheet = $spreadsheet->getActiveSheet();
  75. $cellCoordinates = '2:3';
  76. $styleArray = [
  77. 'font' => [
  78. 'bold' => true,
  79. ],
  80. ];
  81. $sheet->getStyle($cellCoordinates)->applyFromArray($styleArray);
  82. $sheet->setCellValue('A1', 'xxxa1');
  83. $sheet->setCellValue('A2', 'xxxa2');
  84. $sheet->setCellValue('A3', 'xxxa3');
  85. $sheet->setCellValue('B1', 'xxxa1');
  86. $sheet->setCellValue('B2', 'xxxa2');
  87. $sheet->setCellValue('B3', 'xxxa3');
  88. $sheet->setCellValue('C1', 'xxxc1');
  89. $sheet->setCellValue('C2', 'xxxc2');
  90. $sheet->setCellValue('C3', 'xxxc3');
  91. $styleArray = [
  92. 'font' => [
  93. 'italic' => true,
  94. ],
  95. ];
  96. $sheet->getStyle($cellCoordinates)->applyFromArray($styleArray);
  97. self::assertFalse($sheet->getStyle('A1')->getFont()->getBold());
  98. self::assertTrue($sheet->getStyle('B2')->getFont()->getBold());
  99. self::assertTrue($sheet->getStyle('C3')->getFont()->getBold());
  100. self::assertFalse($sheet->getStyle('A1')->getFont()->getItalic());
  101. self::assertTrue($sheet->getStyle('B2')->getFont()->getItalic());
  102. self::assertTrue($sheet->getStyle('C3')->getFont()->getItalic());
  103. }
  104. public function testIssue1712A(): void
  105. {
  106. $spreadsheet = new Spreadsheet();
  107. $sheet = $spreadsheet->getActiveSheet();
  108. $rgb = '4467b8';
  109. $sheet->fromArray(['OK', 'KO']);
  110. $spreadsheet->getActiveSheet()
  111. ->getStyle('A1')
  112. ->getFill()
  113. ->setFillType(Fill::FILL_SOLID)
  114. ->getStartColor()
  115. ->setRGB($rgb);
  116. $spreadsheet->getActiveSheet()
  117. ->getStyle('B')
  118. ->getFill()
  119. ->setFillType(Fill::FILL_SOLID)
  120. ->getStartColor()
  121. ->setRGB($rgb);
  122. self::assertEquals($rgb, $sheet->getCell('A1')->getStyle()->getFill()->getStartColor()->getRGB());
  123. self::assertEquals($rgb, $sheet->getCell('B1')->getStyle()->getFill()->getStartColor()->getRGB());
  124. }
  125. public function testIssue1712B(): void
  126. {
  127. $spreadsheet = new Spreadsheet();
  128. $sheet = $spreadsheet->getActiveSheet();
  129. $rgb = '4467b8';
  130. $spreadsheet->getActiveSheet()
  131. ->getStyle('A1')
  132. ->getFill()
  133. ->setFillType(Fill::FILL_SOLID)
  134. ->getStartColor()
  135. ->setRGB($rgb);
  136. $spreadsheet->getActiveSheet()
  137. ->getStyle('B')
  138. ->getFill()
  139. ->setFillType(Fill::FILL_SOLID)
  140. ->getStartColor()
  141. ->setRGB($rgb);
  142. $sheet->fromArray(['OK', 'KO']);
  143. self::assertEquals($rgb, $sheet->getCell('A1')->getStyle()->getFill()->getStartColor()->getRGB());
  144. self::assertEquals($rgb, $sheet->getCell('B1')->getStyle()->getFill()->getStartColor()->getRGB());
  145. }
  146. public function testStyleLoopUpwards(): void
  147. {
  148. $spreadsheet = new Spreadsheet();
  149. $sheet = $spreadsheet->getActiveSheet();
  150. $cellCoordinates = 'C5:A3';
  151. $styleArray = [
  152. 'font' => [
  153. 'bold' => true,
  154. ],
  155. ];
  156. $sheet->getStyle($cellCoordinates)->applyFromArray($styleArray);
  157. $sheet->setCellValue('A1', 'xxxa1');
  158. $sheet->setCellValue('A2', 'xxxa2');
  159. $sheet->setCellValue('A3', 'xxxa3');
  160. $sheet->setCellValue('B1', 'xxxa1');
  161. $sheet->setCellValue('B2', 'xxxa2');
  162. $sheet->setCellValue('B3', 'xxxa3');
  163. $sheet->setCellValue('C1', 'xxxc1');
  164. $sheet->setCellValue('C2', 'xxxc2');
  165. $sheet->setCellValue('C3', 'xxxc3');
  166. self::assertFalse($sheet->getStyle('A1')->getFont()->getBold());
  167. self::assertFalse($sheet->getStyle('B2')->getFont()->getBold());
  168. self::assertTrue($sheet->getStyle('C3')->getFont()->getBold());
  169. }
  170. }