VisibilityTest.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Writer\Xls;
  3. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  4. use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
  5. use PhpOffice\PhpSpreadsheetTests\Functional\AbstractFunctional;
  6. class VisibilityTest extends AbstractFunctional
  7. {
  8. /**
  9. * @dataProvider dataProviderRowVisibility
  10. */
  11. public function testRowVisibility(array $visibleRows): void
  12. {
  13. $spreadsheet = new Spreadsheet();
  14. $worksheet = $spreadsheet->getActiveSheet();
  15. foreach ($visibleRows as $row => $visibility) {
  16. $worksheet->setCellValue("A{$row}", $row);
  17. $worksheet->getRowDimension($row)->setVisible($visibility);
  18. }
  19. $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xls');
  20. $reloadedWorksheet = $reloadedSpreadsheet->getActiveSheet();
  21. foreach ($visibleRows as $row => $visibility) {
  22. self::assertSame($visibility, $reloadedWorksheet->getRowDimension($row)->getVisible());
  23. }
  24. }
  25. public function dataProviderRowVisibility(): array
  26. {
  27. return [
  28. [
  29. [1 => true, 2 => false, 3 => false, 4 => true, 5 => true, 6 => false],
  30. ],
  31. ];
  32. }
  33. /**
  34. * @dataProvider dataProviderColumnVisibility
  35. */
  36. public function testColumnVisibility(array $visibleColumns): void
  37. {
  38. $spreadsheet = new Spreadsheet();
  39. $worksheet = $spreadsheet->getActiveSheet();
  40. foreach ($visibleColumns as $column => $visibility) {
  41. $worksheet->setCellValue("{$column}1", $column);
  42. $worksheet->getColumnDimension($column)->setVisible($visibility);
  43. }
  44. $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xls');
  45. $reloadedWorksheet = $reloadedSpreadsheet->getActiveSheet();
  46. foreach ($visibleColumns as $column => $visibility) {
  47. self::assertSame($visibility, $reloadedWorksheet->getColumnDimension($column)->getVisible());
  48. }
  49. }
  50. public function dataProviderColumnVisibility(): array
  51. {
  52. return [
  53. [
  54. ['A' => true, 'B' => false, 'C' => false, 'D' => true, 'E' => true, 'F' => false],
  55. ],
  56. ];
  57. }
  58. /**
  59. * @dataProvider dataProviderSheetVisibility
  60. */
  61. public function testSheetVisibility(array $visibleSheets): void
  62. {
  63. $spreadsheet = new Spreadsheet();
  64. $spreadsheet->removeSheetByIndex(0);
  65. foreach ($visibleSheets as $sheetName => $visibility) {
  66. $worksheet = $spreadsheet->addSheet(new Worksheet($spreadsheet, $sheetName));
  67. $worksheet->setCellValue('A1', $sheetName);
  68. $worksheet->setSheetState($visibility);
  69. }
  70. $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xls');
  71. foreach ($visibleSheets as $sheetName => $visibility) {
  72. $reloadedWorksheet = $reloadedSpreadsheet->getSheetByNameOrThrow($sheetName);
  73. self::assertSame($visibility, $reloadedWorksheet->getSheetState());
  74. }
  75. }
  76. public function dataProviderSheetVisibility(): array
  77. {
  78. return [
  79. [
  80. [
  81. 'Worksheet 1' => Worksheet::SHEETSTATE_HIDDEN,
  82. 'Worksheet 2' => Worksheet::SHEETSTATE_VERYHIDDEN,
  83. 'Worksheet 3' => Worksheet::SHEETSTATE_VISIBLE,
  84. ],
  85. ],
  86. ];
  87. }
  88. }