Files
oleibman 117f89c751 Clone Worksheet With Table
Fix #3820. When cloning a worksheet, special handling is already included for `cellCollection` and `drawingCollection`. It needs to be added for `tableCollection` as well. In theory, `chartCollection` also needs it. However, there are no clone methods for any of the Chart objects, so that will be a substantially larger effort. There is no need to delay this fix waiting for that.
2023-12-11 15:31:26 -08:00

42 lines
1.2 KiB
PHP

<?php
declare(strict_types=1);
namespace PhpOffice\PhpSpreadsheetTests\Worksheet\Table;
use PhpOffice\PhpSpreadsheet\Worksheet\Table;
class Issue3820Test extends SetupTeardown
{
public function testTableOnOtherSheet(): void
{
// Clone worksheet failed when table was on sheet
$spreadsheet = $this->getSpreadsheet();
$sheet = $this->getSheet();
$sheet->setTitle('Original');
$sheet->fromArray(
[
['MyCol', 'Colonne2', 'Colonne3'],
[10, 20],
[2],
[3],
[4],
],
null,
'B1',
true
);
$table = new Table('B1:D5', 'Tableau1');
$sheet->addTable($table);
$clonedSheet = clone $sheet;
$clonedSheet->setTitle('Cloned');
$spreadsheet->addsheet($clonedSheet);
$originalTable = $spreadsheet->getTableByName('Tableau1');
$newTable = $spreadsheet->getTableByName('Tableau1clone');
self::assertNotNull($newTable);
self::assertSame($table, $originalTable);
self::assertSame('Cloned', $newTable->getWorksheet()?->getTitle());
self::assertSame('B1:D5', $newTable->getRange());
}
}