ByColumnAndRowTest.php 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Worksheet;
  3. use PhpOffice\PhpSpreadsheet\Cell\DataType;
  4. use PhpOffice\PhpSpreadsheet\Comment;
  5. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  6. use PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter;
  7. use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
  8. use PHPUnit\Framework\TestCase;
  9. class ByColumnAndRowTest extends TestCase
  10. {
  11. public function testSetCellValueByColumnAndRow(): void
  12. {
  13. $spreadsheet = new Spreadsheet();
  14. $sheet = $spreadsheet->getActiveSheet();
  15. $sheet->setCellValueByColumnAndRow(2, 2, 2);
  16. self::assertSame(2, $sheet->getCell('B2')->getValue());
  17. }
  18. public function testSetCellValueExplicitByColumnAndRow(): void
  19. {
  20. $spreadsheet = new Spreadsheet();
  21. $sheet = $spreadsheet->getActiveSheet();
  22. $sheet->setCellValueExplicitByColumnAndRow(2, 2, '="PHP Rules"', DataType::TYPE_STRING);
  23. self::assertSame('="PHP Rules"', $sheet->getCell('B2')->getValue());
  24. self::assertSame(DataType::TYPE_STRING, $sheet->getCell('B2')->getDataType());
  25. }
  26. public function testCellExistsByColumnAndRow(): void
  27. {
  28. $spreadsheet = new Spreadsheet();
  29. $sheet = $spreadsheet->getActiveSheet();
  30. $cellExists = $sheet->cellExistsByColumnAndRow(2, 2);
  31. self::assertFalse($cellExists);
  32. $sheet->setCellValue('B2', 2);
  33. $cellExists = $sheet->cellExistsByColumnAndRow(2, 2);
  34. self::assertTrue($cellExists);
  35. }
  36. public function testGetCellByColumnAndRow(): void
  37. {
  38. $spreadsheet = new Spreadsheet();
  39. $sheet = $spreadsheet->getActiveSheet();
  40. $sheet->setCellValue('B2', 2);
  41. $cell = $sheet->getCellByColumnAndRow(2, 2);
  42. self::assertSame('B2', $cell->getCoordinate());
  43. self::assertSame(2, $cell->getValue());
  44. }
  45. public function testGetStyleByColumnAndRow(): void
  46. {
  47. $spreadsheet = new Spreadsheet();
  48. $sheet = $spreadsheet->getActiveSheet();
  49. $data = [['A', 'B'], ['C', 'D']];
  50. $sheet->fromArray($data, null, 'B2', true);
  51. $sheet->getStyle('B2:C3')->getFont()->setBold(true);
  52. $rangeStyle = $sheet->getStyleByColumnAndRow(2, 2, 3, 3);
  53. self::assertTrue($rangeStyle->getFont()->getBold());
  54. $cellStyle = $sheet->getStyleByColumnAndRow(2, 2);
  55. self::assertTrue($cellStyle->getFont()->getBold());
  56. }
  57. public function testSetBreakByColumnAndRow(): void
  58. {
  59. $spreadsheet = new Spreadsheet();
  60. $sheet = $spreadsheet->getActiveSheet();
  61. $sheet->setCellValue('B2', 2);
  62. $sheet->setBreakByColumnAndRow(2, 2, Worksheet::BREAK_COLUMN);
  63. $breaks = $sheet->getBreaks();
  64. self::assertArrayHasKey('B2', $breaks);
  65. self::assertSame(Worksheet::BREAK_COLUMN, $breaks['B2']);
  66. }
  67. public function testMergeCellsByColumnAndRow(): void
  68. {
  69. $spreadsheet = new Spreadsheet();
  70. $sheet = $spreadsheet->getActiveSheet();
  71. $data = [['A', 'B'], ['C', 'D']];
  72. $sheet->fromArray($data, null, 'B2', true);
  73. $sheet->mergeCellsByColumnAndRow(2, 2, 3, 3);
  74. $mergeRanges = $sheet->getMergeCells();
  75. self::assertArrayHasKey('B2:C3', $mergeRanges);
  76. }
  77. public function testUnergeCellsByColumnAndRow(): void
  78. {
  79. $spreadsheet = new Spreadsheet();
  80. $sheet = $spreadsheet->getActiveSheet();
  81. $data = [['A', 'B'], ['C', 'D']];
  82. $sheet->fromArray($data, null, 'B2', true);
  83. $sheet->mergeCells('B2:C3');
  84. $mergeRanges = $sheet->getMergeCells();
  85. self::assertArrayHasKey('B2:C3', $mergeRanges);
  86. $sheet->unmergeCellsByColumnAndRow(2, 2, 3, 3);
  87. $mergeRanges = $sheet->getMergeCells();
  88. self::assertEmpty($mergeRanges);
  89. }
  90. public function testProtectCellsByColumnAndRow(): void
  91. {
  92. $spreadsheet = new Spreadsheet();
  93. $sheet = $spreadsheet->getActiveSheet();
  94. $data = [['A', 'B'], ['C', 'D']];
  95. $sheet->fromArray($data, null, 'B2', true);
  96. $sheet->protectCellsByColumnAndRow(2, 2, 3, 3, 'secret', false);
  97. $protectedRanges = $sheet->getProtectedCells();
  98. self::assertArrayHasKey('B2:C3', $protectedRanges);
  99. }
  100. public function testUnprotectCellsByColumnAndRow(): void
  101. {
  102. $spreadsheet = new Spreadsheet();
  103. $sheet = $spreadsheet->getActiveSheet();
  104. $data = [['A', 'B'], ['C', 'D']];
  105. $sheet->fromArray($data, null, 'B2', true);
  106. $sheet->protectCells('B2:C3', 'secret', false);
  107. $protectedRanges = $sheet->getProtectedCells();
  108. self::assertArrayHasKey('B2:C3', $protectedRanges);
  109. $sheet->unprotectCellsByColumnAndRow(2, 2, 3, 3);
  110. $protectedRanges = $sheet->getProtectedCells();
  111. self::assertEmpty($protectedRanges);
  112. }
  113. public function testSetAutoFilterByColumnAndRow(): void
  114. {
  115. $spreadsheet = new Spreadsheet();
  116. $sheet = $spreadsheet->getActiveSheet();
  117. $data = [['A', 'B'], ['C', 'D']];
  118. $sheet->fromArray($data, null, 'B2', true);
  119. $sheet->setAutoFilterByColumnAndRow(2, 2, 3, 3);
  120. $autoFilter = $sheet->getAutoFilter();
  121. self::assertInstanceOf(AutoFilter::class, $autoFilter);
  122. self::assertSame('B2:C3', $autoFilter->getRange());
  123. }
  124. public function testFreezePaneByColumnAndRow(): void
  125. {
  126. $spreadsheet = new Spreadsheet();
  127. $sheet = $spreadsheet->getActiveSheet();
  128. $data = [['A', 'B'], ['C', 'D']];
  129. $sheet->fromArray($data, null, 'B2', true);
  130. $sheet->freezePaneByColumnAndRow(2, 2);
  131. $freezePane = $sheet->getFreezePane();
  132. self::assertSame('B2', $freezePane);
  133. }
  134. public function testGetCommentByColumnAndRow(): void
  135. {
  136. $spreadsheet = new Spreadsheet();
  137. $sheet = $spreadsheet->getActiveSheet();
  138. $sheet->setCellValue('B2', 2);
  139. $spreadsheet->getActiveSheet()
  140. ->getComment('B2')
  141. ->getText()->createTextRun('My Test Comment');
  142. $comment = $sheet->getCommentByColumnAndRow(2, 2);
  143. self::assertInstanceOf(Comment::class, $comment);
  144. self::assertSame('My Test Comment', $comment->getText()->getPlainText());
  145. }
  146. }