/** * Add named range * * @param PHPExcel_NamedRange $namedRange * @return PHPExcel */ public function addNamedRange(PHPExcel_NamedRange $namedRange) { $this->_namedRanges[$namedRange->getWorksheet()->getTitle() . '!' . $namedRange->getName()] = $namedRange; return true; }
/** * Write Defined Name for named range * * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer * @param PHPExcel_NamedRange $pNamedRange * @throws PHPExcel_Writer_Exception */ private function _writeDefinedNameForNamedRange(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_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 = PHPExcel_Cell::splitRange($pNamedRange->getRange()); for ($i = 0; $i < count($range); $i++) { $range[$i][0] = '\'' . str_replace("'", "''", $pNamedRange->getWorksheet()->getTitle()) . '\'!' . PHPExcel_Cell::absoluteReference($range[$i][0]); if (isset($range[$i][1])) { $range[$i][1] = PHPExcel_Cell::absoluteReference($range[$i][1]); } } $range = PHPExcel_Cell::buildRange($range); $objWriter->writeRawData($range); $objWriter->endElement(); }
/** * Write Defined Name for autoFilter * * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer * @param PHPExcel_NamedRange $pNamedRange * @throws Exception */ private function _writeDefinedNameForNamedRange(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_NamedRange $pNamedRange) { // definedName for named range $objWriter->startElement('definedName'); $objWriter->writeAttribute('name', $pNamedRange->getName()); if ($pNamedRange->getLocalOnly()) { $objWriter->writeAttribute('localSheetId', $pNamedRange->getWorksheet()->getParent()->getIndex($pNamedRange->getWorksheet())); } // Create absolute coordinate and write as raw text $range = PHPExcel_Cell::splitRange($pNamedRange->getRange()); $range[0] = PHPExcel_Cell::absoluteCoordinate($range[0]); if (isset($range[1])) { $range[1] = PHPExcel_Cell::absoluteCoordinate($range[1]); } $range = implode(':', $range); $objWriter->writeRaw('\'' . $pNamedRange->getWorksheet()->getTitle() . '\'!' . $range); $objWriter->endElement(); }