Example #1
0
 /**
  * Write CFHeader record
  */
 private function _writeCFHeader()
 {
     $record = 0x1b0;
     // Record identifier
     $length = 0x16;
     // Bytes to follow
     $numColumnMin = null;
     $numColumnMax = null;
     $numRowMin = null;
     $numRowMax = null;
     $arrConditional = array();
     foreach ($this->_phpSheet->getConditionalStylesCollection() as $cellCoordinate => $conditionalStyles) {
         foreach ($conditionalStyles as $conditional) {
             if ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_EXPRESSION || $conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CELLIS) {
                 if (!in_array($conditional->getHashCode(), $arrConditional)) {
                     $arrConditional[] = $conditional->getHashCode();
                 }
                 // Cells
                 $arrCoord = PHPExcel_Cell::coordinateFromString($cellCoordinate);
                 if (!is_numeric($arrCoord[0])) {
                     $arrCoord[0] = PHPExcel_Cell::columnIndexFromString($arrCoord[0]);
                 }
                 if (is_null($numColumnMin) || $numColumnMin > $arrCoord[0]) {
                     $numColumnMin = $arrCoord[0];
                 }
                 if (is_null($numColumnMax) || $numColumnMax < $arrCoord[0]) {
                     $numColumnMax = $arrCoord[0];
                 }
                 if (is_null($numRowMin) || $numRowMin > $arrCoord[1]) {
                     $numRowMin = $arrCoord[1];
                 }
                 if (is_null($numRowMax) || $numRowMax < $arrCoord[1]) {
                     $numRowMax = $arrCoord[1];
                 }
             }
         }
     }
     $needRedraw = 1;
     $cellRange = pack('vvvv', $numRowMin - 1, $numRowMax - 1, $numColumnMin - 1, $numColumnMax - 1);
     $header = pack('vv', $record, $length);
     $data = pack('vv', count($arrConditional), $needRedraw);
     $data .= $cellRange;
     $data .= pack('v', 0x1);
     $data .= $cellRange;
     $this->_append($header . $data);
 }
Example #2
0
 /**
  * Write ConditionalFormatting
  *
  * @param	PHPExcel_Shared_XMLWriter			$objWriter		XML Writer
  * @param	PHPExcel_Worksheet					$pSheet			Worksheet
  * @throws	Exception
  */
 private function _writeConditionalFormatting(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null)
 {
     // Conditional id
     $id = 1;
     // Loop through styles in the current worksheet
     foreach ($pSheet->getConditionalStylesCollection() as $cellCoordinate => $conditionalStyles) {
         foreach ($conditionalStyles as $conditional) {
             // WHY was this again?
             // if ($this->getParentWriter()->getStylesConditionalHashTable()->getIndexForHashCode( $conditional->getHashCode() ) == '') {
             //	continue;
             // }
             if ($conditional->getConditionType() != PHPExcel_Style_Conditional::CONDITION_NONE) {
                 // conditionalFormatting
                 $objWriter->startElement('conditionalFormatting');
                 $objWriter->writeAttribute('sqref', $cellCoordinate);
                 // cfRule
                 $objWriter->startElement('cfRule');
                 $objWriter->writeAttribute('type', $conditional->getConditionType());
                 $objWriter->writeAttribute('dxfId', $this->getParentWriter()->getStylesConditionalHashTable()->getIndexForHashCode($conditional->getHashCode()));
                 $objWriter->writeAttribute('priority', $id++);
                 if (($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CELLIS || $conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT) && $conditional->getOperatorType() != PHPExcel_Style_Conditional::OPERATOR_NONE) {
                     $objWriter->writeAttribute('operator', $conditional->getOperatorType());
                 }
                 if ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT && !is_null($conditional->getText())) {
                     $objWriter->writeAttribute('text', $conditional->getText());
                 }
                 if ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT && $conditional->getOperatorType() == PHPExcel_Style_Conditional::OPERATOR_CONTAINSTEXT && !is_null($conditional->getText())) {
                     $objWriter->writeElement('formula', 'NOT(ISERROR(SEARCH("' . $conditional->getText() . '",' . $cellCoordinate . ')))');
                 } else {
                     if ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT && $conditional->getOperatorType() == PHPExcel_Style_Conditional::OPERATOR_BEGINSWITH && !is_null($conditional->getText())) {
                         $objWriter->writeElement('formula', 'LEFT(' . $cellCoordinate . ',' . strlen($conditional->getText()) . ')="' . $conditional->getText() . '"');
                     } else {
                         if ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT && $conditional->getOperatorType() == PHPExcel_Style_Conditional::OPERATOR_ENDSWITH && !is_null($conditional->getText())) {
                             $objWriter->writeElement('formula', 'RIGHT(' . $cellCoordinate . ',' . strlen($conditional->getText()) . ')="' . $conditional->getText() . '"');
                         } else {
                             if ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT && $conditional->getOperatorType() == PHPExcel_Style_Conditional::OPERATOR_NOTCONTAINS && !is_null($conditional->getText())) {
                                 $objWriter->writeElement('formula', 'ISERROR(SEARCH("' . $conditional->getText() . '",' . $cellCoordinate . '))');
                             } else {
                                 if ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CELLIS || $conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT || $conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_EXPRESSION) {
                                     foreach ($conditional->getConditions() as $formula) {
                                         // Formula
                                         $objWriter->writeElement('formula', $formula);
                                     }
                                 }
                             }
                         }
                     }
                 }
                 $objWriter->endElement();
                 $objWriter->endElement();
             }
         }
     }
 }