/** * Add named range * * @param NamedRange $namedRange * @return PHPExcel */ public function addNamedRange(NamedRange $namedRange) { if ($namedRange->getScope() == null) { // global scope $this->_namedRanges[$namedRange->getName()] = $namedRange; } else { // local scope $this->_namedRanges[$namedRange->getScope()->getTitle() . '!' . $namedRange->getName()] = $namedRange; } return true; }
/** * Write Defined Name for autoFilter * * @param Shared_XMLWriter $objWriter XML Writer * @param NamedRange $pNamedRange * @throws Exception */ private function _writeDefinedNameForNamedRange(Shared_XMLWriter $objWriter = null, NamedRange $pNamedRange) { // definedName for named range $objWriter->startElement('definedName'); $objWriter->writeAttribute('name', $pNamedRange->getName()); if ($pNamedRange->getLocalOnly()) { $objWriter->writeAttribute('localSheetId', $pNamedRange->getScope()->getParent()->getIndex($pNamedRange->getScope())); } // Create absolute coordinate and write as raw text $range = Cell::splitRange($pNamedRange->getRange()); for ($i = 0; $i < count($range); $i++) { $range[$i][0] = '\'' . str_replace("'", "''", $pNamedRange->getWorksheet()->getTitle()) . '\'!' . Cell::absoluteCoordinate($range[$i][0]); if (isset($range[$i][1])) { $range[$i][1] = Cell::absoluteCoordinate($range[$i][1]); } } $range = Cell::buildRange($range); $objWriter->writeRaw($range); $objWriter->endElement(); }