Add Parameter retitleIfNeeded to AddSheet

A little more useful than my first crack at this.
This commit is contained in:
oleibman
2025-01-06 16:56:53 -08:00
parent dcc25637f2
commit ac5d3706a4
+14 -11
View File
@@ -515,16 +515,7 @@ class Spreadsheet implements JsonSerializable
{
$newSheet = new Worksheet($this);
$title = $newSheet->getTitle();
if ($this->sheetNameExists($title)) {
$i = 1;
$newTitle = "$title $i";
while ($this->sheetNameExists($newTitle)) {
++$i;
$newTitle = "$title $i";
}
$newSheet->setTitle($newTitle);
}
$this->addSheet($newSheet, $sheetIndex);
$this->addSheet($newSheet, $sheetIndex, true);
return $newSheet;
}
@@ -545,8 +536,20 @@ class Spreadsheet implements JsonSerializable
* @param Worksheet $worksheet The worksheet to add
* @param null|int $sheetIndex Index where sheet should go (0,1,..., or null for last)
*/
public function addSheet(Worksheet $worksheet, ?int $sheetIndex = null): Worksheet
public function addSheet(Worksheet $worksheet, ?int $sheetIndex = null, bool $retitleIfNeeded = false): Worksheet
{
if ($retitleIfNeeded) {
$title = $worksheet->getTitle();
if ($this->sheetNameExists($title)) {
$i = 1;
$newTitle = "$title $i";
while ($this->sheetNameExists($newTitle)) {
++$i;
$newTitle = "$title $i";
}
$worksheet->setTitle($newTitle);
}
}
if ($this->sheetNameExists($worksheet->getTitle())) {
throw new Exception(
"Workbook already contains a worksheet named '{$worksheet->getTitle()}'. Rename this worksheet first."