/** * Duplicate cell style to a range of cells * * Please note that this will overwrite existing cell styles for cells in range! * * @param PHPExcel_Style $pCellStyle Cell style to duplicate * @param string $pRange Range of cells (i.e. "A1:B10"), or just one cell (i.e. "A1") * @throws PHPExcel_Exception * @return PHPExcel_Worksheet */ public function duplicateStyle(PHPExcel_Style $pCellStyle = null, $pRange = '') { // make sure we have a real style and not supervisor $style = $pCellStyle->getIsSupervisor() ? $pCellStyle->getSharedComponent() : $pCellStyle; // Add the style to the workbook if necessary $workbook = $this->_parent; if ($existingStyle = $this->_parent->getCellXfByHashCode($pCellStyle->getHashCode())) { // there is already such cell Xf in our collection $xfIndex = $existingStyle->getIndex(); } else { // we don't have such a cell Xf, need to add $workbook->addCellXf($pCellStyle); $xfIndex = $pCellStyle->getIndex(); } // Calculate range outer borders list($rangeStart, $rangeEnd) = PHPExcel_Cell::rangeBoundaries($pRange . ':' . $pRange); // Make sure we can loop upwards on rows and columns if ($rangeStart[0] > $rangeEnd[0] && $rangeStart[1] > $rangeEnd[1]) { $tmp = $rangeStart; $rangeStart = $rangeEnd; $rangeEnd = $tmp; } // Loop through cells and apply styles for ($col = $rangeStart[0]; $col <= $rangeEnd[0]; ++$col) { for ($row = $rangeStart[1]; $row <= $rangeEnd[1]; ++$row) { $this->getCell(PHPExcel_Cell::stringFromColumnIndex($col - 1) . $row)->setXfIndex($xfIndex); } } return $this; }
/** * Duplicate cell style to a range of cells * * Please note that this will overwrite existing cell styles for cells in * range! * * @param PHPExcel_Style $pCellStyle * to duplicate * @param string $pRange * cells (i.e. "A1:B10"), or just one cell (i.e. "A1") * @throws Exception * @return PHPExcel_Worksheet */ public function duplicateStyle(PHPExcel_Style $pCellStyle = null, $pRange = '') { // make sure we have a real style and not supervisor $style = $pCellStyle->getIsSupervisor () ? $pCellStyle->getSharedComponent () : $pCellStyle; // Add the style to the workbook if necessary $workbook = $this->_parent; if ($existingStyle = $this->_parent->getCellXfByHashCode ( $pCellStyle->getHashCode () )) { // there is already such cell Xf in our collection $xfIndex = $existingStyle->getIndex (); } else { // we don't have such a cell Xf, need to add $workbook->addCellXf ( $pCellStyle ); $xfIndex = $pCellStyle->getIndex (); } // Uppercase coordinate $pRange = strtoupper ( $pRange ); // Is it a cell range or a single cell? $rangeA = ''; $rangeB = ''; if (strpos ( $pRange, ':' ) === false) { $rangeA = $pRange; $rangeB = $pRange; } else { list ( $rangeA, $rangeB ) = explode ( ':', $pRange ); } // Calculate range outer borders $rangeStart = PHPExcel_Cell::coordinateFromString ( $rangeA ); $rangeEnd = PHPExcel_Cell::coordinateFromString ( $rangeB ); // Translate column into index $rangeStart [0] = PHPExcel_Cell::columnIndexFromString ( $rangeStart [0] ) - 1; $rangeEnd [0] = PHPExcel_Cell::columnIndexFromString ( $rangeEnd [0] ) - 1; // Make sure we can loop upwards on rows and columns if ($rangeStart [0] > $rangeEnd [0] && $rangeStart [1] > $rangeEnd [1]) { $tmp = $rangeStart; $rangeStart = $rangeEnd; $rangeEnd = $tmp; } // Loop through cells and apply styles for($col = $rangeStart [0]; $col <= $rangeEnd [0]; ++ $col) { for($row = $rangeStart [1]; $row <= $rangeEnd [1]; ++ $row) { $this->getCell ( PHPExcel_Cell::stringFromColumnIndex ( $col ) . $row )->setXfIndex ( $xfIndex ); } } return $this; }