FreezePaneTest.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Functional;
  3. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  4. class FreezePaneTest extends AbstractFunctional
  5. {
  6. public function providerFormats(): array
  7. {
  8. return [
  9. ['Xls'],
  10. ['Xlsx'],
  11. ];
  12. }
  13. /**
  14. * @dataProvider providerFormats
  15. *
  16. * @param string $format
  17. */
  18. public function testFreezePane($format): void
  19. {
  20. $cellSplit = 'B4';
  21. $topLeftCell = 'E7';
  22. $spreadsheet = new Spreadsheet();
  23. $spreadsheet->getActiveSheet()->freezePane($cellSplit, $topLeftCell);
  24. $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, $format);
  25. // Read written file
  26. $reloadedActive = $reloadedSpreadsheet->getActiveSheet();
  27. $actualCellSplit = $reloadedActive->getFreezePane();
  28. $actualTopLeftCell = $reloadedActive->getTopLeftCell();
  29. self::assertSame($cellSplit, $actualCellSplit, 'should be able to set freeze pane');
  30. self::assertSame($topLeftCell, $actualTopLeftCell, 'should be able to set the top left cell');
  31. }
  32. /**
  33. * @dataProvider providerFormats
  34. *
  35. * @param string $format
  36. */
  37. public function testFreezePaneWithInvalidSelectedCells($format): void
  38. {
  39. $cellSplit = 'A7';
  40. $topLeftCell = 'A24';
  41. $spreadsheet = new Spreadsheet();
  42. $worksheet = $spreadsheet->getActiveSheet();
  43. $worksheet->freezePane('A7', 'A24');
  44. $worksheet->setSelectedCells('F5');
  45. $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, $format);
  46. // Read written file
  47. $reloadedActive = $reloadedSpreadsheet->getActiveSheet();
  48. $actualCellSplit = $reloadedActive->getFreezePane();
  49. $actualTopLeftCell = $reloadedActive->getTopLeftCell();
  50. self::assertSame($cellSplit, $actualCellSplit, 'should be able to set freeze pane');
  51. self::assertSame($topLeftCell, $actualTopLeftCell, 'should be able to set the top left cell');
  52. self::assertSame('F5', $reloadedActive->getSelectedCells());
  53. }
  54. /**
  55. * @dataProvider providerFormats
  56. *
  57. * @param string $format
  58. */
  59. public function testFreezePaneUserSelectedCell($format): void
  60. {
  61. $spreadsheet = new Spreadsheet();
  62. $worksheet = $spreadsheet->getActiveSheet();
  63. $worksheet->setCellValue('A1', 'Header1');
  64. $worksheet->setCellValue('B1', 'Header2');
  65. $worksheet->setCellValue('C1', 'Header3');
  66. $worksheet->setCellValue('A2', 'Data1');
  67. $worksheet->setCellValue('B2', 'Data2');
  68. $worksheet->setCellValue('C2', 'Data3');
  69. $worksheet->setCellValue('A3', 'Data4');
  70. $worksheet->setCellValue('B3', 'Data5');
  71. $worksheet->setCellValue('C3', 'Data6');
  72. $worksheet->freezePane('A2');
  73. $worksheet->setSelectedCells('C3');
  74. $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, $format);
  75. // Read written file
  76. $reloadedActive = $reloadedSpreadsheet->getActiveSheet();
  77. $expected = 'C3';
  78. self::assertSame($expected, $reloadedActive->getSelectedCells());
  79. }
  80. /**
  81. * @dataProvider providerFormats
  82. *
  83. * @param string $format
  84. */
  85. public function testNoFreezePaneUserSelectedCell($format): void
  86. {
  87. $spreadsheet = new Spreadsheet();
  88. $worksheet = $spreadsheet->getActiveSheet();
  89. $worksheet->setCellValue('A1', 'Header1');
  90. $worksheet->setCellValue('B1', 'Header2');
  91. $worksheet->setCellValue('C1', 'Header3');
  92. $worksheet->setCellValue('A2', 'Data1');
  93. $worksheet->setCellValue('B2', 'Data2');
  94. $worksheet->setCellValue('C2', 'Data3');
  95. $worksheet->setCellValue('A3', 'Data4');
  96. $worksheet->setCellValue('B3', 'Data5');
  97. $worksheet->setCellValue('C3', 'Data6');
  98. //$worksheet->freezePane('A2');
  99. $worksheet->setSelectedCells('C3');
  100. $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, $format);
  101. // Read written file
  102. $reloadedActive = $reloadedSpreadsheet->getActiveSheet();
  103. $expected = 'C3';
  104. self::assertSame($expected, $reloadedActive->getSelectedCells());
  105. }
  106. }