Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 3.11.x will end 14 Nov 2022 (12 months plus 6 months extension).
  • Bug fixes for security issues in 3.11.x will end 13 Nov 2023 (18 months plus 12 months extension).
  • PHP version: minimum PHP 7.3.0 Note: minimum PHP version has increased since Moodle 3.10. PHP 7.4.x is supported too.
<?php

namespace PhpOffice\PhpSpreadsheet;

> use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
< class NamedRange
> class NamedRange extends DefinedName
{ /**
< * Range name. < * < * @var string < */ < private $name; < < /** < * Worksheet on which the named range can be resolved. < * < * @var Worksheet < */ < private $worksheet; < < /** < * Range of the referenced cells. < * < * @var string < */ < private $range; < < /** < * Is the named range local? (i.e. can only be used on $this->worksheet). < * < * @var bool < */ < private $localOnly; < < /** < * Scope. < * < * @var Worksheet < */ < private $scope; < < /**
* Create a new NamedRange.
< * < * @param string $pName < * @param Worksheet $pWorksheet < * @param string $pRange < * @param bool $pLocalOnly < * @param null|Worksheet $pScope Scope. Only applies when $pLocalOnly = true. Null for global scope. < * < * @throws Exception < */ < public function __construct($pName, Worksheet $pWorksheet, $pRange = 'A1', $pLocalOnly = false, $pScope = null) < { < // Validate data < if (($pName === null) || ($pWorksheet === null) || ($pRange === null)) { < throw new Exception('Parameters can not be null.'); < } < < // Set local members < $this->name = $pName; < $this->worksheet = $pWorksheet; < $this->range = $pRange; < $this->localOnly = $pLocalOnly; < $this->scope = ($pLocalOnly == true) ? (($pScope == null) ? $pWorksheet : $pScope) : null; < } < < /** < * Get name. < * < * @return string < */ < public function getName() < { < return $this->name; < } < < /** < * Set name. < * < * @param string $value < * < * @return NamedRange
*/
< public function setName($value) < { < if ($value !== null) { < // Old title < $oldTitle = $this->name; < < // Re-attach < if ($this->worksheet !== null) { < $this->worksheet->getParent()->removeNamedRange($this->name, $this->worksheet); < } < $this->name = $value; < < if ($this->worksheet !== null) { < $this->worksheet->getParent()->addNamedRange($this); < } < < // New title < $newTitle = $this->name; < ReferenceHelper::getInstance()->updateNamedFormulas($this->worksheet->getParent(), $oldTitle, $newTitle);
> public function __construct( > string $name, > ?Worksheet $worksheet = null, > string $range = 'A1', > bool $localOnly = false, > ?Worksheet $scope = null > ) { > if ($worksheet === null && $scope === null) { > throw new Exception('You must specify a worksheet or a scope for a Named Range');
}
< < return $this;
> parent::__construct($name, $worksheet, $range, $localOnly, $scope);
} /**
< * Get worksheet. < * < * @return Worksheet
> * Get the range value.
*/
< public function getWorksheet()
> public function getRange(): string
{
< return $this->worksheet;
> return $this->value;
} /**
< * Set worksheet. < * < * @param Worksheet $value < * < * @return NamedRange
> * Set the range value.
*/
< public function setWorksheet(Worksheet $value = null)
> public function setRange(string $range): self
{
< if ($value !== null) { < $this->worksheet = $value;
> if (!empty($range)) { > $this->value = $range;
} return $this; }
< /** < * Get range. < * < * @return string < */ < public function getRange()
> public function getCellsInRange(): array
{
< return $this->range;
> $range = $this->value; > if (substr($range, 0, 1) === '=') { > $range = substr($range, 1);
}
< /** < * Set range. < * < * @param string $value < * < * @return NamedRange < */ < public function setRange($value) < { < if ($value !== null) { < $this->range = $value; < } < < return $this; < } < < /** < * Get localOnly. < * < * @return bool < */ < public function getLocalOnly() < { < return $this->localOnly; < } < < /** < * Set localOnly. < * < * @param bool $value < * < * @return NamedRange < */ < public function setLocalOnly($value) < { < $this->localOnly = $value; < $this->scope = $value ? $this->worksheet : null; < < return $this; < } < < /** < * Get scope. < * < * @return null|Worksheet < */ < public function getScope() < { < return $this->scope; < } < < /** < * Set scope. < * < * @param null|Worksheet $value < * < * @return NamedRange < */ < public function setScope(Worksheet $value = null) < { < $this->scope = $value; < $this->localOnly = $value != null; < < return $this; < } < < /** < * Resolve a named range to a regular cell range. < * < * @param string $pNamedRange Named range < * @param null|Worksheet $pSheet Scope. Use null for global scope < * < * @return NamedRange < */ < public static function resolveRange($pNamedRange, Worksheet $pSheet) < { < return $pSheet->getParent()->getNamedRange($pNamedRange, $pSheet); < } < < /** < * Implement PHP __clone to create a deep clone, not just a shallow copy. < */ < public function __clone() < { < $vars = get_object_vars($this); < foreach ($vars as $key => $value) { < if (is_object($value)) { < $this->$key = clone $value; < } else { < $this->$key = $value; < } < }
> return Coordinate::extractAllCellReferencesInRange($range);
} }