getActiveSheet(); $worksheet->fromArray($this->testDataRaw, null, 'A1', true); $worksheet->mergeCells($mergeRange); $mergeResult = $worksheet->toArray(null, true, true, false); self::assertSame($expectedResult, $mergeResult); } public function testMergeCellsDefaultBehaviourFormatted(): void { $expectedResult = [ ['1960-12-19', null], ]; $mergeRange = 'A1:B1'; $spreadsheet = new Spreadsheet(); $worksheet = $spreadsheet->getActiveSheet(); $worksheet->fromArray($this->testDataFormatted, null, 'A1', true); $worksheet->getStyle($mergeRange)->getNumberFormat()->setFormatCode('yyyy-mm-dd'); $worksheet->mergeCells($mergeRange); $mergeResult = $worksheet->toArray(null, true, true, false); self::assertSame($expectedResult, $mergeResult); } public function testMergeCellsHideBehaviour(): void { $expectedResult = [ [1.1, 2.2, 3.3], [4.4, 5.5, 9.9], [5.5, 7.7, 13.2], ]; $mergeRange = 'A1:C3'; $spreadsheet = new Spreadsheet(); $worksheet = $spreadsheet->getActiveSheet(); $worksheet->fromArray($this->testDataRaw, null, 'A1', true); $worksheet->mergeCells($mergeRange, Worksheet::MERGE_CELL_CONTENT_HIDE); $mergeResult = $worksheet->toArray(null, true, true, false); self::assertSame($expectedResult, $mergeResult); } public function testMergeCellsHideBehaviourFormatted(): void { $expectedResult = [ ['1960-12-19', '2022-09-15'], ]; $mergeRange = 'A1:B1'; $spreadsheet = new Spreadsheet(); $worksheet = $spreadsheet->getActiveSheet(); $worksheet->fromArray($this->testDataFormatted, null, 'A1', true); $worksheet->getStyle($mergeRange)->getNumberFormat()->setFormatCode('yyyy-mm-dd'); $worksheet->mergeCells($mergeRange, Worksheet::MERGE_CELL_CONTENT_HIDE); $mergeResult = $worksheet->toArray(null, true, true, false); self::assertSame($expectedResult, $mergeResult); } /** * @dataProvider mergeCellsMergeBehaviourProvider */ public function testMergeCellsMergeBehaviour(array $testData, string $mergeRange, array $expectedResult): void { $spreadsheet = new Spreadsheet(); $worksheet = $spreadsheet->getActiveSheet(); $worksheet->fromArray($testData, null, 'A1', true); // Force a precalculation to populate the calculation cache, so that we can verify that it is being cleared $worksheet->toArray(); $worksheet->mergeCells($mergeRange, Worksheet::MERGE_CELL_CONTENT_MERGE); $mergeResult = $worksheet->toArray(null, true, true, false); self::assertSame($expectedResult, $mergeResult); } public function mergeCellsMergeBehaviourProvider(): array { return [ 'With Calculated Values' => [ $this->testDataRaw, 'A1:C3', [ ['1.1 2.2 1.1 4.4 5.5 0 1.1 0 0', null, null], [null, null, null], [null, null, null], ], ], 'With Empty Cells' => [ [ [1, '', 2], [null, 3, null], [4, null, 5], ], 'A1:C3', [ ['1 2 3 4 5', null, null], [null, null, null], [null, null, null], ], ], [ [ [12, '=5+1', '=A1/A2'], ], 'A1:C1', [ ['12 6 #DIV/0!', null, null], ], ], ]; } public function testMergeCellsMergeBehaviourFormatted(): void { $expectedResult = [ ['1960-12-19 2022-09-15', null], ]; $mergeRange = 'A1:B1'; $spreadsheet = new Spreadsheet(); $worksheet = $spreadsheet->getActiveSheet(); $worksheet->fromArray($this->testDataFormatted, null, 'A1', true); $worksheet->getStyle($mergeRange)->getNumberFormat()->setFormatCode('yyyy-mm-dd'); $worksheet->mergeCells($mergeRange, Worksheet::MERGE_CELL_CONTENT_MERGE); $mergeResult = $worksheet->toArray(null, true, true, false); self::assertSame($expectedResult, $mergeResult); } }