VisibilityTest.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Writer\Html;
  3. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  4. use PhpOffice\PhpSpreadsheet\Style\Font;
  5. use PhpOffice\PhpSpreadsheet\Writer\Html;
  6. use PhpOffice\PhpSpreadsheetTests\Functional;
  7. class VisibilityTest extends Functional\AbstractFunctional
  8. {
  9. public function testVisibility1(): void
  10. {
  11. $spreadsheet = new Spreadsheet();
  12. $sheet = $spreadsheet->getActiveSheet();
  13. $sheet->setCellValue('A1', 1);
  14. $sheet->setCellValue('A2', 2);
  15. $sheet->setCellValue('A3', 3);
  16. $sheet->setCellValue('B1', 4);
  17. $sheet->setCellValue('B2', 5);
  18. $sheet->setCellValue('B3', 6);
  19. $sheet->setCellValue('C1', 7);
  20. $sheet->setCellValue('C2', 8);
  21. $sheet->setCellValue('C3', 9);
  22. $sheet->getColumnDimension('B')->setVisible(false);
  23. $sheet->getRowDimension(2)->setVisible(false);
  24. $writer = new Html($spreadsheet);
  25. $html = $writer->generateHTMLAll();
  26. $reg = '/^\\s*table[.]sheet0 tr { display:none; visibility:hidden }\\s*$/m';
  27. $rowsrch = preg_match($reg, $html);
  28. self::assertEquals($rowsrch, 0);
  29. $reg = '/^\\s*table[.]sheet0 tr[.]row1 { display:none; visibility:hidden }\\s*$/m';
  30. $rowsrch = preg_match($reg, $html);
  31. self::assertEquals($rowsrch, 1);
  32. $reg = '/^\\s*table[.]sheet0 [.]column1 [{] display:none [}]\\s*$/m';
  33. $colsrch = preg_match($reg, $html);
  34. self::assertEquals($colsrch, 1);
  35. $this->writeAndReload($spreadsheet, 'Html');
  36. }
  37. public function testVisibility2(): void
  38. {
  39. $spreadsheet = new Spreadsheet();
  40. $sheet = $spreadsheet->getActiveSheet();
  41. $sheet->setCellValue('A1', 1);
  42. $sheet->setCellValue('A2', 2);
  43. $sheet->setCellValue('A3', 3);
  44. $sheet->setCellValue('B1', 4);
  45. $sheet->setCellValue('B2', 5);
  46. $sheet->setCellValue('B3', 6);
  47. $sheet->setCellValue('C1', 7);
  48. $sheet->setCellValue('C2', 8);
  49. $sheet->setCellValue('C3', 9);
  50. $sheet->getDefaultRowDimension()->setVisible(false);
  51. $sheet->getColumnDimension('B')->setVisible(false);
  52. $sheet->getRowDimension(1)->setVisible(true);
  53. $sheet->getRowDimension(3)->setVisible(true);
  54. $writer = new Html($spreadsheet);
  55. $html = $writer->generateHTMLAll();
  56. $reg = '/^\\s*table[.]sheet0 tr { height:15pt; display:none; visibility:hidden }\\s*$/m';
  57. $rowsrch = preg_match($reg, $html);
  58. self::assertEquals($rowsrch, 1);
  59. $reg = '/^\\s*table[.]sheet0 tr[.]row1 { display:none; visibility:hidden }\\s*$/m';
  60. $rowsrch = preg_match($reg, $html);
  61. self::assertEquals($rowsrch, 0);
  62. $reg = '/^\\s*table[.]sheet0 [.]column1 [{] display:none [}]\\s*$/m';
  63. $colsrch = preg_match($reg, $html);
  64. self::assertEquals($colsrch, 1);
  65. $this->writeAndReload($spreadsheet, 'Html');
  66. }
  67. public function testDefaultRowHeight(): void
  68. {
  69. $spreadsheet = new Spreadsheet();
  70. $sheet = $spreadsheet->getActiveSheet();
  71. $sheet->setCellValue('A1', 1);
  72. $sheet->getStyle('A1')->getFont()->setStrikethrough(true);
  73. $sheet->setCellValue('A2', 2);
  74. $sheet->setCellValue('A3', 3);
  75. $sheet->getStyle('A3')->getFont()->setStrikethrough(true)->setUnderline(Font::UNDERLINE_SINGLE);
  76. $sheet->setCellValue('B1', 4);
  77. $sheet->setCellValue('B2', 5);
  78. $sheet->setCellValue('B3', 6);
  79. $sheet->setCellValue('C1', 7);
  80. $sheet->setCellValue('C2', 8);
  81. $sheet->setCellValue('C3', 9);
  82. $sheet->getStyle('C3')->getFont()->setUnderline(Font::UNDERLINE_SINGLE);
  83. $sheet->getDefaultRowDimension()->setRowHeight(20);
  84. $sheet->getRowDimension(2)->setRowHeight(25);
  85. $writer = new Html($spreadsheet);
  86. $html = $writer->generateHTMLAll();
  87. self::assertEquals(1, substr_count($html, 'height:20pt'));
  88. self::assertEquals(1, substr_count($html, 'height:25pt'));
  89. $rowsrch = preg_match('/^\\s*table[.]sheet0 tr [{] height:20pt [}]\\s*$/m', $html);
  90. self::assertEquals(1, $rowsrch);
  91. $rowsrch = preg_match('/^\\s*table[.]sheet0 tr[.]row1 [{] height:25pt [}]\\s*$/m', $html);
  92. self::assertEquals(1, $rowsrch);
  93. $rowsrch = preg_match('/^\\s*td[.]style1, th[.]style1 [{].*text-decoration:line-through;.*[}]\\s*$/m', $html);
  94. self::assertEquals(1, $rowsrch);
  95. $rowsrch = preg_match('/^\\s*td[.]style2, th[.]style2 [{].*text-decoration:underline line-through;.*[}]\\s*$/m', $html);
  96. self::assertEquals(1, $rowsrch);
  97. $rowsrch = preg_match('/^\\s*td[.]style3, th[.]style3 [{].*text-decoration:underline;.*[}]\\s*$/m', $html);
  98. self::assertEquals(1, $rowsrch);
  99. $this->writeAndReload($spreadsheet, 'Html');
  100. }
  101. }