RemoveTest.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Worksheet;
  3. use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
  4. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  5. use PhpOffice\PhpSpreadsheet\Style\Color;
  6. use PhpOffice\PhpSpreadsheet\Style\Fill;
  7. use PHPUnit\Framework\TestCase;
  8. class RemoveTest extends TestCase
  9. {
  10. public function testRemoveRow(): void
  11. {
  12. $spreadsheet = new Spreadsheet();
  13. $sheet = $spreadsheet->getActiveSheet();
  14. $fillColors = [
  15. 'FFFF0000',
  16. 'FF00FF00',
  17. 'FF0000FF',
  18. ];
  19. $rowHeights = [-1, -1, 1.2, 1.3, 1.4, 1.5, -1, -1, -1];
  20. for ($row = 1; $row < 10; ++$row) {
  21. $sheet->getCell("B$row")
  22. ->getStyle()
  23. ->getFill()
  24. ->setFillType(Fill::FILL_SOLID)
  25. ->setStartColor(new Color($fillColors[$row % 3]));
  26. $sheet->getCell("B$row")->setValue("X$row");
  27. $height = $rowHeights[$row - 1];
  28. if ($height > 0) {
  29. $sheet->getRowDimension($row)->setRowHeight($height);
  30. }
  31. }
  32. //$mapRow = [1, 2, 3, 4, 5, 6, 7, 8, 9];
  33. $sheet->removeRow(4, 2);
  34. $mapRow = [1, 2, 3, 6, 7, 8, 9];
  35. $rowCount = count($mapRow);
  36. for ($row = 1; $row <= $rowCount; ++$row) {
  37. $mappedRow = $mapRow[$row - 1];
  38. self::assertSame("X$mappedRow", $sheet->getCell("B$row")->getValue(), "Row value $row mapped to $mappedRow");
  39. self::assertSame($fillColors[$mappedRow % 3], $sheet->getCell("B$row")->getStyle()->getFill()->getStartColor()->getArgb(), "Row fill color $row mapped to $mappedRow");
  40. self::assertSame($rowHeights[$mappedRow - 1], $sheet->getRowDimension($row)->getRowHeight(), "Row height $row mapped to $mappedRow");
  41. }
  42. $spreadsheet->disconnectWorksheets();
  43. }
  44. public function testRemoveColumn(): void
  45. {
  46. $spreadsheet = new Spreadsheet();
  47. $sheet = $spreadsheet->getActiveSheet();
  48. $fillColors = [
  49. 'FFFF0000',
  50. 'FF00FF00',
  51. 'FF0000FF',
  52. ];
  53. $colWidths = [-1, -1, 1.2, 1.3, 1.4, 1.5, -1, -1, -1];
  54. for ($colNumber = 1; $colNumber < 10; ++$colNumber) {
  55. $col = Coordinate::stringFromColumnIndex($colNumber);
  56. $sheet->getCell("{$col}1")
  57. ->getStyle()
  58. ->getFill()
  59. ->setFillType(Fill::FILL_SOLID)
  60. ->setStartColor(new Color($fillColors[$colNumber % 3]));
  61. $sheet->getCell("{$col}1")->setValue("100$col");
  62. $width = $colWidths[$colNumber - 1];
  63. if ($width > 0) {
  64. $sheet->getColumnDimension($col)->setWidth($width);
  65. }
  66. }
  67. //$mapCol = [1, 2, 3, 4, 5, 6, 7, 8, 9];
  68. $sheet->removeColumn('D', 2);
  69. $mapCol = [1, 2, 3, 6, 7, 8, 9];
  70. $colCount = count($mapCol);
  71. for ($colNumber = 1; $colNumber < $colCount; ++$colNumber) {
  72. $col = Coordinate::stringFromColumnIndex($colNumber);
  73. $mappedCol = $mapCol[$colNumber - 1];
  74. $mappedColString = Coordinate::stringFromColumnIndex($mappedCol);
  75. self::assertSame("100$mappedColString", $sheet->getCell("{$col}1")->getValue(), "Column value $colNumber mapped to $mappedCol");
  76. self::assertSame($fillColors[$mappedCol % 3], $sheet->getCell("{$col}1")->getStyle()->getFill()->getStartColor()->getArgb(), "Col fill color $col mapped to $mappedColString");
  77. self::assertEquals($colWidths[$mappedCol - 1], $sheet->getColumnDimension($col)->getWidth(), "Col width $col mapped to $mappedColString");
  78. }
  79. $spreadsheet->disconnectWorksheets();
  80. }
  81. }