FIX: Invalid styles in rowDimensions of added external sheet.
This commit is contained in:
parent
5719b21341
commit
e41fdf4909
|
|
@ -874,6 +874,14 @@ class Spreadsheet
|
|||
$columnDimension->setXfIndex($columnDimension->getXfIndex() + $countCellXfs);
|
||||
}
|
||||
|
||||
// update the row dimensions Xfs
|
||||
foreach ($worksheet->getRowDimensions() as $rowDimension) {
|
||||
$xfIndex = $rowDimension->getXfIndex();
|
||||
if ($xfIndex !== null) {
|
||||
$rowDimension->setXfIndex($xfIndex + $countCellXfs);
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addSheet($worksheet, $sheetIndex);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -217,4 +217,33 @@ class SpreadsheetTest extends TestCase
|
|||
self::assertEquals($countXfs + $index, $sheet3->getCell('B1')->getXfIndex());
|
||||
self::assertEquals($countXfs + $index, $sheet3->getColumnDimension('B')->getXfIndex());
|
||||
}
|
||||
|
||||
public function testAddExternalRowDimensionStyles(): void
|
||||
{
|
||||
$spreadsheet1 = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
|
||||
$sheet1 = $spreadsheet1->createSheet()->setTitle('sheetWithColumnDimension');
|
||||
$sheet1->getCell('A1')->setValue(1);
|
||||
$sheet1->getCell('A1')->getStyle()->getFont()->setItalic(true);
|
||||
$sheet1->getRowDimension(2)->setXfIndex($sheet1->getCell('A1')->getXfIndex());
|
||||
$index = $sheet1->getRowDimension(2)->getXfIndex();
|
||||
self::assertEquals(1, $index);
|
||||
self::assertCount(2, $spreadsheet1->getCellXfCollection());
|
||||
|
||||
$spreadsheet2 = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
|
||||
$sheet2 = $spreadsheet2->createSheet()->setTitle('sheetWithTwoStyles');
|
||||
$sheet2->getCell('A1')->setValue(1);
|
||||
$sheet2->getCell('A1')->getStyle()->getFont()->setBold(true);
|
||||
$sheet2->getCell('B2')->getStyle()->getFont()->setSuperscript(true);
|
||||
$countXfs = count($spreadsheet2->getCellXfCollection());
|
||||
self::assertEquals(3, $countXfs);
|
||||
|
||||
$sheet3 = $spreadsheet2->addExternalSheet($sheet1);
|
||||
self::assertCount(5, $spreadsheet2->getCellXfCollection());
|
||||
self::assertTrue($sheet3->getCell('A1')->getStyle()->getFont()->getItalic());
|
||||
self::assertTrue($sheet3->getCell('A2')->getStyle()->getFont()->getItalic());
|
||||
self::assertFalse($sheet3->getCell('A2')->getStyle()->getFont()->getBold());
|
||||
// Prove Xf index changed although style is same.
|
||||
self::assertEquals($countXfs + $index, $sheet3->getCell('A2')->getXfIndex());
|
||||
self::assertEquals($countXfs + $index, $sheet3->getRowDimension(2)->getXfIndex());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue