mirror of
https://github.com/PHPOffice/PhpSpreadsheet.git
synced 2026-09-10 10:06:30 +00:00
Add Parameter retitleIfNeeded to AddSheet
A little more useful than my first crack at this.
This commit is contained in:
@@ -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."
|
||||
|
||||
Reference in New Issue
Block a user