Beispiel #1
0
    /**
     * Set title
     *
     * @param string $pValue String containing the dimension of this worksheet
     * @param string $updateFormulaCellReferences boolean Flag indicating whether cell references in formulae should
     *        	be updated to reflect the new sheet name.
     *          This should be left as the default true, unless you are
     *          certain that no formula cells on any worksheet contain
     *          references to this worksheet
     * @return PHPExcel_Worksheet
     */
    public function setTitle($pValue = 'Worksheet', $updateFormulaCellReferences = true)
    {
        // Is this a 'rename' or not?
        if ($this->getTitle() == $pValue) {
            return $this;
        }

        // Syntax check
        self::_checkSheetTitle($pValue);

        // Old title
        $oldTitle = $this->getTitle();

        if ($this->_parent) {
            // Is there already such sheet name?
			if ($this->_parent->sheetNameExists($pValue)) {
                // Use name, but append with lowest possible integer

                if (PHPExcel_Shared_String::CountCharacters($pValue) > 29) {
                    $pValue = PHPExcel_Shared_String::Substring($pValue,0,29);
                }
                $i = 1;
				while ($this->_parent->sheetNameExists($pValue . ' ' . $i)) {
                    ++$i;
                    if ($i == 10) {
                        if (PHPExcel_Shared_String::CountCharacters($pValue) > 28) {
                            $pValue = PHPExcel_Shared_String::Substring($pValue,0,28);
                        }
                    } elseif ($i == 100) {
                        if (PHPExcel_Shared_String::CountCharacters($pValue) > 27) {
                            $pValue = PHPExcel_Shared_String::Substring($pValue,0,27);
                        }
                    }
                }

                $altTitle = $pValue . ' ' . $i;
                return $this->setTitle($altTitle,$updateFormulaCellReferences);
            }
        }

        // Set title
        $this->_title = $pValue;
        $this->_dirty = true;

        if ($this->_parent) {
            // New title
            $newTitle = $this->getTitle();
			PHPExcel_Calculation::getInstance($this->_parent)
			    ->renameCalculationCacheForWorksheet($oldTitle, $newTitle);
            if ($updateFormulaCellReferences)
				PHPExcel_ReferenceHelper::getInstance()->updateNamedFormulas($this->_parent, $oldTitle, $newTitle);
        }

        return $this;
    }
 /**
  * Gets a sheet by a loose name match unless
  * exactMatch is true. Returns a PHPExcel_Worksheet object
  * if a match is found, false if no match.
  * @param $name
  * @param bool|false $exactMatch
  * @return bool|\PHPExcel_Worksheet
  */
 private function getSheetByName($name, $exactMatch = false)
 {
     if ($exactMatch === false) {
         $name = strtolower($name);
         // determine a case insensitive match
         foreach ($this->workbook->getSheetNames() as $sheet) {
             if (strtolower($sheet) === $name) {
                 $use = $sheet;
                 break;
             }
         }
         if (!isset($use)) {
             return false;
         }
         $this->worksheet = $this->workbook->getSheetByName($use);
     } else {
         if ($this->workbook->sheetNameExists($name)) {
             $this->worksheet = $this->workbook->getSheetByName($name);
         } else {
             return false;
         }
     }
     return $this->worksheet;
 }