Example #1
0
 /**
  * Get cell at a specific coordinate
  *
  * @param 	string 			$pCoordinate	Coordinate of the cell
  * @throws 	Exception
  * @return 	PHPExcel_Cell 	Cell that was found
  */
 public function getCell($pCoordinate = 'A1')
 {
     // Check cell collection
     if ($this->_cellCollection->isDataSet($pCoordinate)) {
         return $this->_cellCollection->getCacheData($pCoordinate);
     }
     // Worksheet reference?
     if (strpos($pCoordinate, '!') !== false) {
         $worksheetReference = PHPExcel_Worksheet::extractSheetTitle($pCoordinate, true);
         return $this->getParent()->getSheetByName($worksheetReference[0])->getCell($worksheetReference[1]);
     }
     // Named range?
     if (!preg_match('/^' . PHPExcel_Calculation::CALCULATION_REGEXP_CELLREF . '$/i', $pCoordinate, $matches) && preg_match('/^' . PHPExcel_Calculation::CALCULATION_REGEXP_NAMEDRANGE . '$/i', $pCoordinate, $matches)) {
         $namedRange = PHPExcel_NamedRange::resolveRange($pCoordinate, $this);
         if (!is_null($namedRange)) {
             $pCoordinate = $namedRange->getRange();
             return $namedRange->getWorksheet()->getCell($pCoordinate);
         }
     }
     // Uppercase coordinate
     $pCoordinate = strtoupper($pCoordinate);
     if (strpos($pCoordinate, ':') !== false || strpos($pCoordinate, ',') !== false) {
         throw new Exception('Cell coordinate can not be a range of cells.');
     } elseif (strpos($pCoordinate, '$') !== false) {
         throw new Exception('Cell coordinate must not be absolute.');
     } else {
         // Create new cell object
         // Coordinates
         $aCoordinates = PHPExcel_Cell::coordinateFromString($pCoordinate);
         // $cell = $this->_cellCollection->addCacheData($pCoordinate,new PHPExcel_Cell($aCoordinates[0], $aCoordinates[1], null, PHPExcel_Cell_DataType::TYPE_NULL, $this));
         $cell = new PHPExcel_Cell($aCoordinates[0], $aCoordinates[1], null, PHPExcel_Cell_DataType::TYPE_NULL, $this);
         $this->_cellCollectionIsSorted = false;
         if (PHPExcel_Cell::columnIndexFromString($this->_cachedHighestColumn) < PHPExcel_Cell::columnIndexFromString($aCoordinates[0])) {
             $this->_cachedHighestColumn = $aCoordinates[0];
         }
         if ($this->_cachedHighestRow < $aCoordinates[1]) {
             $this->_cachedHighestRow = $aCoordinates[1];
         }
         // Cell needs appropriate xfIndex
         $rowDimensions = $this->getRowDimensions();
         $columnDimensions = $this->getColumnDimensions();
         if (isset($rowDimensions[$aCoordinates[1]]) && $rowDimensions[$aCoordinates[1]]->getXfIndex() !== null) {
             // then there is a row dimension with explicit style, assign it to the cell
             $cell->setXfIndex($rowDimensions[$aCoordinates[1]]->getXfIndex());
         } else {
             if (isset($columnDimensions[$aCoordinates[0]])) {
                 // then there is a column dimension, assign it to the cell
                 $cell->setXfIndex($columnDimensions[$aCoordinates[0]]->getXfIndex());
             } else {
                 // set to default index
                 $cell->setXfIndex(0);
             }
         }
         return $cell;
     }
 }