Skip to content

Commit ac5d370

Browse files
committed
Add Parameter retitleIfNeeded to AddSheet
A little more useful than my first crack at this.
1 parent dcc2563 commit ac5d370

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

src/PhpSpreadsheet/Spreadsheet.php

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -515,16 +515,7 @@ public function createSheet(?int $sheetIndex = null): Worksheet
515515
{
516516
$newSheet = new Worksheet($this);
517517
$title = $newSheet->getTitle();
518-
if ($this->sheetNameExists($title)) {
519-
$i = 1;
520-
$newTitle = "$title $i";
521-
while ($this->sheetNameExists($newTitle)) {
522-
++$i;
523-
$newTitle = "$title $i";
524-
}
525-
$newSheet->setTitle($newTitle);
526-
}
527-
$this->addSheet($newSheet, $sheetIndex);
518+
$this->addSheet($newSheet, $sheetIndex, true);
528519

529520
return $newSheet;
530521
}
@@ -545,8 +536,20 @@ public function sheetNameExists(string $worksheetName): bool
545536
* @param Worksheet $worksheet The worksheet to add
546537
* @param null|int $sheetIndex Index where sheet should go (0,1,..., or null for last)
547538
*/
548-
public function addSheet(Worksheet $worksheet, ?int $sheetIndex = null): Worksheet
539+
public function addSheet(Worksheet $worksheet, ?int $sheetIndex = null, bool $retitleIfNeeded = false): Worksheet
549540
{
541+
if ($retitleIfNeeded) {
542+
$title = $worksheet->getTitle();
543+
if ($this->sheetNameExists($title)) {
544+
$i = 1;
545+
$newTitle = "$title $i";
546+
while ($this->sheetNameExists($newTitle)) {
547+
++$i;
548+
$newTitle = "$title $i";
549+
}
550+
$worksheet->setTitle($newTitle);
551+
}
552+
}
550553
if ($this->sheetNameExists($worksheet->getTitle())) {
551554
throw new Exception(
552555
"Workbook already contains a worksheet named '{$worksheet->getTitle()}'. Rename this worksheet first."

0 commit comments

Comments
 (0)