当前位置: 首页>>代码示例>>PHP>>正文


PHP PHPExcel_Cell::getParent方法代码示例

本文整理汇总了PHP中PHPExcel_Cell::getParent方法的典型用法代码示例。如果您正苦于以下问题:PHP PHPExcel_Cell::getParent方法的具体用法?PHP PHPExcel_Cell::getParent怎么用?PHP PHPExcel_Cell::getParent使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在PHPExcel_Cell的用法示例。


在下文中一共展示了PHPExcel_Cell::getParent方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: bindValue

 /**
  * Bind value to a cell
  *
  * @param PHPExcel_Cell $cell	Cell to bind value to
  * @param mixed $value			Value to bind in cell
  * @return boolean
  */
 public function bindValue(PHPExcel_Cell $cell, $value = null)
 {
     // Find out data type
     $dataType = parent::dataTypeForValue($value);
     // Style logic - strings
     if ($dataType === PHPExcel_Cell_DataType::TYPE_STRING && !$value instanceof PHPExcel_RichText) {
         // Check for percentage
         if (preg_match('/^\\-?[0-9]*\\.?[0-9]*\\s?\\%$/', $value)) {
             // Convert value to number
             $cell->setValueExplicit((double) str_replace('%', '', $value) / 100, PHPExcel_Cell_DataType::TYPE_NUMERIC);
             // Set style
             $cell->getParent()->getStyle($cell->getCoordinate())->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE);
             return true;
         }
         // Check for time e.g. '9:45', '09:45'
         if (preg_match('/^(\\d|[0-1]\\d|2[0-3]):[0-5]\\d$/', $value)) {
             list($h, $m) = explode(':', $value);
             $days = $h / 24 + $m / 1440;
             // Convert value to number
             $cell->setValueExplicit($days, PHPExcel_Cell_DataType::TYPE_NUMERIC);
             // Set style
             $cell->getParent()->getStyle($cell->getCoordinate())->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME3);
             return true;
         }
         // Check for date
         if (strtotime($value) !== false) {
             // make sure we have UTC for the sake of strtotime
             $saveTimeZone = date_default_timezone_get();
             date_default_timezone_set('UTC');
             // Convert value to Excel date
             $cell->setValueExplicit(PHPExcel_Shared_Date::PHPToExcel(strtotime($value)), PHPExcel_Cell_DataType::TYPE_NUMERIC);
             // Set style
             $cell->getParent()->getStyle($cell->getCoordinate())->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2);
             // restore original value for timezone
             date_default_timezone_set($saveTimeZone);
             return true;
         }
     }
     // Style logic - Numbers
     if ($dataType === PHPExcel_Cell_DataType::TYPE_NUMERIC) {
         // Leading zeroes?
         if (preg_match('/^\\-?[0]+[0-9]*\\.?[0-9]*$/', $value)) {
             // Convert value to string
             $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_STRING);
             // Set style
             $cell->getParent()->getStyle($cell->getCoordinate())->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
             return true;
         }
     }
     // Not bound yet? Use parent...
     return parent::bindValue($cell, $value);
 }
开发者ID:nagiro,项目名称:hospici_cultural,代码行数:59,代码来源:AdvancedValueBinder.php

示例2: __construct

 /**
  * Create a new PHPExcel_RichText instance
  *
  * @param 	PHPExcel_Cell	$pParent
  * @throws	Exception
  */
 public function __construct(PHPExcel_Cell $pCell = null)
 {
     // Initialise variables
     $this->_richTextElements = array();
     // Set parent?
     if (!is_null($pCell)) {
         // Set parent cell
         $this->_parent = $pCell;
         // Add cell text and style
         if ($this->_parent->getValue() != "") {
             $objRun = new PHPExcel_RichText_Run($this->_parent->getValue());
             $objRun->setFont(clone $this->_parent->getParent()->getStyle($this->_parent->getCoordinate())->getFont());
             $this->addText($objRun);
         }
         // Set parent value
         $this->_parent->setValue($this);
     }
 }
开发者ID:teungri,项目名称:RequirementsApp,代码行数:24,代码来源:RichText.php

示例3: bindValue

 /**
  * Bind value to a cell
  *
  * @param PHPExcel_Cell $cell	Cell to bind value to
  * @param mixed $value			Value to bind in cell
  * @return boolean
  */
 public function bindValue(PHPExcel_Cell $cell, $value = null)
 {
     // Find out data type
     $dataType = parent::dataTypeForValue($value);
     // Style logic - strings
     if ($dataType === PHPExcel_Cell_DataType::TYPE_STRING && !$value instanceof PHPExcel_RichText) {
         // Check for percentage
         if (preg_match('/^\\-?[0-9]*\\.?[0-9]*\\s?\\%$/', $value)) {
             // Convert value to number
             $cell->setValueExplicit((double) str_replace('%', '', $value) / 100, PHPExcel_Cell_DataType::TYPE_NUMERIC);
             // Set style
             $cell->getParent()->getStyle($cell->getCoordinate())->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE);
             return true;
         }
         // Check for date
         if (strtotime($value) !== false) {
             // Convert value to Excel date
             $cell->setValueExplicit(PHPExcel_Shared_Date::PHPToExcel(strtotime($value)), PHPExcel_Cell_DataType::TYPE_NUMERIC);
             // Set style
             $cell->getParent()->getStyle($cell->getCoordinate())->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2);
             return true;
         }
     }
     // Style logic - Numbers
     if ($dataType === PHPExcel_Cell_DataType::TYPE_NUMERIC) {
         // Leading zeroes?
         if (preg_match('/^\\-?[0]+[0-9]*\\.?[0-9]*$/', $value)) {
             // Convert value to string
             $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_STRING);
             // Set style
             $cell->getParent()->getStyle($cell->getCoordinate())->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
             return true;
         }
     }
     // Not bound yet? Use parent...
     return parent::bindValue($cell, $value);
 }
开发者ID:TiMoChao,项目名称:xingfu,代码行数:44,代码来源:AdvancedValueBinder.php

示例4: __construct

 /**
  * Create a new PHPExcel_RichText instance
  *
  * @param 	PHPExcel_Cell	$pParent
  * @throws	PHPExcel_Exception
  */
 public function __construct(PHPExcel_Cell $pCell = null)
 {
     // Initialise variables
     $this->_richTextElements = array();
     // Rich-Text string attached to cell?
     if ($pCell !== NULL) {
         // Add cell text and style
         if ($pCell->getValue() != "") {
             $objRun = new PHPExcel_RichText_Run($pCell->getValue());
             $objRun->setFont(clone $pCell->getParent()->getStyle($pCell->getCoordinate())->getFont());
             $this->addText($objRun);
         }
         // Set parent value
         $pCell->setValueExplicit($this, PHPExcel_Cell_DataType::TYPE_STRING);
     }
 }
开发者ID:xVirusproj3ct,项目名称:site_web_phf,代码行数:22,代码来源:RichText.php

示例5: setParent

 /**
  * Set parent
  *
  * @param PHPExcel_Cell	$value
  */
 public function setParent(PHPExcel_Cell $value)
 {
     // Set parent
     $this->_parent = $value;
     // Set parent value
     $this->_parent->setValue($this);
     // Verify style information
     $sheet = $this->_parent->getParent();
     $cellFont = $sheet->getStyle($this->_parent->getCoordinate())->getFont();
     foreach ($this->getRichTextElements() as $element) {
         if (!$element instanceof PHPExcel_RichText_Run) {
             continue;
         }
         if ($element->getFont()->getHashCode() == $sheet->getDefaultStyle()->getFont()->getHashCode()) {
             if ($element->getFont()->getHashCode() != $cellFont->getHashCode()) {
                 $element->setFont(clone $cellFont);
             }
         }
     }
 }
开发者ID:TiMoChao,项目名称:xingfu,代码行数:25,代码来源:RichText.php

示例6: isDateTime

 /**
  * Is a given cell a date/time?
  *
  * @param	 PHPExcel_Cell	$pCell
  * @return	 boolean
  */
 public static function isDateTime(PHPExcel_Cell $pCell)
 {
     return self::isDateTimeFormat($pCell->getParent()->getStyle($pCell->getCoordinate())->getNumberFormat());
 }
开发者ID:omusico,项目名称:wildfire_php,代码行数:10,代码来源:Date.php

示例7: _processTokenStack

 private function _processTokenStack($tokens, $cellID = NULL, PHPExcel_Cell $pCell = NULL)
 {
     if ($tokens == FALSE) {
         return FALSE;
     }
     //	If we're using cell caching, then $pCell may well be flushed back to the cache (which detaches the parent cell collection),
     //		so we store the parent cell collection so that we can re-attach it when necessary
     $pCellWorksheet = $pCell !== NULL ? $pCell->getWorksheet() : NULL;
     $pCellParent = $pCell !== NULL ? $pCell->getParent() : null;
     $stack = new PHPExcel_Calculation_Token_Stack();
     //	Loop through each token in turn
     foreach ($tokens as $tokenData) {
         //			print_r($tokenData);
         //			echo '<br />';
         $token = $tokenData['value'];
         //			echo '<b>Token is '.$token.'</b><br />';
         // if the token is a binary operator, pop the top two values off the stack, do the operation, and push the result back on the stack
         if (isset(self::$_binaryOperators[$token])) {
             //				echo 'Token is a binary operator<br />';
             //	We must have two operands, error if we don't
             if (($operand2Data = $stack->pop()) === NULL) {
                 return $this->_raiseFormulaError('Internal error - Operand value missing from stack');
             }
             if (($operand1Data = $stack->pop()) === NULL) {
                 return $this->_raiseFormulaError('Internal error - Operand value missing from stack');
             }
             $operand1 = self::_dataTestReference($operand1Data);
             $operand2 = self::_dataTestReference($operand2Data);
             //	Log what we're doing
             if ($token == ':') {
                 $this->_debugLog->writeDebugLog('Evaluating Range ', $this->_showValue($operand1Data['reference']), ' ', $token, ' ', $this->_showValue($operand2Data['reference']));
             } else {
                 $this->_debugLog->writeDebugLog('Evaluating ', $this->_showValue($operand1), ' ', $token, ' ', $this->_showValue($operand2));
             }
             //	Process the operation in the appropriate manner
             switch ($token) {
                 //	Comparison (Boolean) Operators
                 case '>':
                     //	Greater than
                 //	Greater than
                 case '<':
                     //	Less than
                 //	Less than
                 case '>=':
                     //	Greater than or Equal to
                 //	Greater than or Equal to
                 case '<=':
                     //	Less than or Equal to
                 //	Less than or Equal to
                 case '=':
                     //	Equality
                 //	Equality
                 case '<>':
                     //	Inequality
                     $this->_executeBinaryComparisonOperation($cellID, $operand1, $operand2, $token, $stack);
                     break;
                     //	Binary Operators
                 //	Binary Operators
                 case ':':
                     //	Range
                     $sheet1 = $sheet2 = '';
                     if (strpos($operand1Data['reference'], '!') !== FALSE) {
                         list($sheet1, $operand1Data['reference']) = explode('!', $operand1Data['reference']);
                     } else {
                         $sheet1 = $pCellParent !== NULL ? $pCellWorksheet->getTitle() : '';
                     }
                     if (strpos($operand2Data['reference'], '!') !== FALSE) {
                         list($sheet2, $operand2Data['reference']) = explode('!', $operand2Data['reference']);
                     } else {
                         $sheet2 = $sheet1;
                     }
                     if ($sheet1 == $sheet2) {
                         if ($operand1Data['reference'] === NULL) {
                             if (trim($operand1Data['value']) != '' && is_numeric($operand1Data['value'])) {
                                 $operand1Data['reference'] = $pCell->getColumn() . $operand1Data['value'];
                             } elseif (trim($operand1Data['reference']) == '') {
                                 $operand1Data['reference'] = $pCell->getCoordinate();
                             } else {
                                 $operand1Data['reference'] = $operand1Data['value'] . $pCell->getRow();
                             }
                         }
                         if ($operand2Data['reference'] === NULL) {
                             if (trim($operand2Data['value']) != '' && is_numeric($operand2Data['value'])) {
                                 $operand2Data['reference'] = $pCell->getColumn() . $operand2Data['value'];
                             } elseif (trim($operand2Data['reference']) == '') {
                                 $operand2Data['reference'] = $pCell->getCoordinate();
                             } else {
                                 $operand2Data['reference'] = $operand2Data['value'] . $pCell->getRow();
                             }
                         }
                         $oData = array_merge(explode(':', $operand1Data['reference']), explode(':', $operand2Data['reference']));
                         $oCol = $oRow = array();
                         foreach ($oData as $oDatum) {
                             $oCR = PHPExcel_Cell::coordinateFromString($oDatum);
                             $oCol[] = PHPExcel_Cell::columnIndexFromString($oCR[0]) - 1;
                             $oRow[] = $oCR[1];
                         }
                         $cellRef = PHPExcel_Cell::stringFromColumnIndex(min($oCol)) . min($oRow) . ':' . PHPExcel_Cell::stringFromColumnIndex(max($oCol)) . max($oRow);
                         if ($pCellParent !== NULL) {
                             $cellValue = $this->extractCellRange($cellRef, $this->_workbook->getSheetByName($sheet1), FALSE);
//.........这里部分代码省略.........
开发者ID:Princelo,项目名称:bioerp,代码行数:101,代码来源:Calculation.php

示例8: INDIRECT

 /**
  *	INDIRECT
  *
  *	Returns the number of rows in an array or reference.
  *
  *	@param	cellAddress		An array or array formula, or a reference to a range of cells for which you want the number of rows
  *	@return	integer
  */
 public static function INDIRECT($cellAddress = Null, PHPExcel_Cell $pCell = null)
 {
     $cellAddress = PHPExcel_Calculation_Functions::flattenSingleValue($cellAddress);
     if (is_null($cellAddress) || $cellAddress === '') {
         return PHPExcel_Calculation_Functions::REF();
     }
     $cellAddress1 = $cellAddress;
     $cellAddress2 = NULL;
     if (strpos($cellAddress, ':') !== false) {
         list($cellAddress1, $cellAddress2) = explode(':', $cellAddress);
     }
     if (!preg_match('/^' . PHPExcel_Calculation::CALCULATION_REGEXP_CELLREF . '$/i', $cellAddress1, $matches) || !is_null($cellAddress2) && !preg_match('/^' . PHPExcel_Calculation::CALCULATION_REGEXP_CELLREF . '$/i', $cellAddress2, $matches)) {
         return PHPExcel_Calculation_Functions::REF();
     }
     if (strpos($cellAddress, '!') !== false) {
         list($sheetName, $cellAddress) = explode('!', $cellAddress);
         $pSheet = $pCell->getParent()->getParent()->getSheetByName($sheetName);
     } else {
         $pSheet = $pCell->getParent();
     }
     return PHPExcel_Calculation::getInstance()->extractCellRange($cellAddress, $pSheet, False);
 }
开发者ID:Arikito,项目名称:webking.xt,代码行数:30,代码来源:LookupRef.php

示例9: bindValue

 /**
  * Bind value to a cell
  *
  * @param PHPExcel_Cell $cell	Cell to bind value to
  * @param mixed $value			Value to bind in cell
  * @return boolean
  */
 public function bindValue(PHPExcel_Cell $cell, $value = null)
 {
     // sanitize UTF-8 strings
     if (is_string($value)) {
         $value = PHPExcel_Shared_String::SanitizeUTF8($value);
     }
     // Find out data type
     $dataType = parent::dataTypeForValue($value);
     // Style logic - strings
     if ($dataType === PHPExcel_Cell_DataType::TYPE_STRING && !$value instanceof PHPExcel_RichText) {
         // Check for percentage
         if (preg_match('/^\\-?[0-9]*\\.?[0-9]*\\s?\\%$/', $value)) {
             // Convert value to number
             $cell->setValueExplicit((double) str_replace('%', '', $value) / 100, PHPExcel_Cell_DataType::TYPE_NUMERIC);
             // Set style
             $cell->getParent()->getStyle($cell->getCoordinate())->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE);
             return true;
         }
         // Check for time without seconds e.g. '9:45', '09:45'
         if (preg_match('/^(\\d|[0-1]\\d|2[0-3]):[0-5]\\d$/', $value)) {
             list($h, $m) = explode(':', $value);
             $days = $h / 24 + $m / 1440;
             // Convert value to number
             $cell->setValueExplicit($days, PHPExcel_Cell_DataType::TYPE_NUMERIC);
             // Set style
             $cell->getParent()->getStyle($cell->getCoordinate())->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME3);
             return true;
         }
         // Check for time with seconds '9:45:59', '09:45:59'
         if (preg_match('/^(\\d|[0-1]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$/', $value)) {
             list($h, $m, $s) = explode(':', $value);
             $days = $h / 24 + $m / 1440 + $s / 86400;
             // Convert value to number
             $cell->setValueExplicit($days, PHPExcel_Cell_DataType::TYPE_NUMERIC);
             // Set style
             $cell->getParent()->getStyle($cell->getCoordinate())->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4);
             return true;
         }
         // Check for datetime, e.g. '2008-12-31', '2008-12-31 15:59', '2008-12-31 15:59:10'
         if (($v = PHPExcel_Shared_Date::stringToExcel($value)) !== false) {
             // Convert value to Excel date
             $cell->setValueExplicit($v, PHPExcel_Cell_DataType::TYPE_NUMERIC);
             // Set style. Either there is a time part or not. Look for ':'
             if (strpos($value, ':') !== false) {
                 $formatCode = 'yyyy-mm-dd h:mm';
             } else {
                 $formatCode = 'yyyy-mm-dd';
             }
             $cell->getParent()->getStyle($cell->getCoordinate())->getNumberFormat()->setFormatCode($formatCode);
             return true;
         }
         // Check for newline character "\n"
         if (strpos($value, "\n") !== false) {
             $value = PHPExcel_Shared_String::SanitizeUTF8($value);
             $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_STRING);
             // Set style
             $cell->getParent()->getStyle($cell->getCoordinate())->getAlignment()->setWrapText(true);
             return true;
         }
     }
     // Not bound yet? Use parent...
     return parent::bindValue($cell, $value);
 }
开发者ID:electromanlord,项目名称:sgd,代码行数:70,代码来源:AdvancedValueBinder.php

示例10: extractCell

 /**
  * Extract cell
  *
  * @deprecated
  * @param 	string $reference
  * @param	PHPExcel_Cell $pCell
  * @return	mixed	Value
  */
 public function extractCell($reference = 'A1', PHPExcel_Cell $pCell = null)
 {
     $cell = $pCell->getParent()->getCell($reference);
     if ($cell->getValue() instanceof PHPExcel_RichText) {
         return $cell->getValue()->getPlainText();
     } else {
         return $cell->getCalculatedValue();
     }
 }
开发者ID:electromanlord,项目名称:sgd,代码行数:17,代码来源:Calculation.php

示例11: calculate

 /**
  * Calculate cell value (using formula)
  *
  * @param	PHPExcel_Cell	$pCell	Cell to calculate
  * @return	mixed
  * @throws	Exception
  */
 public function calculate(PHPExcel_Cell $pCell = null)
 {
     // Return value
     $returnValue = '';
     // Is the value present in calculation cache?
     if ($this->getCalculationCacheEnabled()) {
         if (isset($this->_calculationCache[$pCell->getParent()->getTitle()][$pCell->getCoordinate()])) {
             if (time() + microtime() - $this->_calculationCache[$pCell->getParent()->getTitle()][$pCell->getCoordinate()]['time'] < $this->_calculationCacheExpirationTime) {
                 return $this->_calculationCache[$pCell->getParent()->getTitle()][$pCell->getCoordinate()]['data'];
             } else {
                 unset($this->_calculationCache[$pCell->getParent()->getTitle()][$pCell->getCoordinate()]);
             }
         }
     }
     // Formula
     $formula = $pCell->getValue();
     // Executable formula array
     $executableFormulaArray = array();
     // Parse formula into a tree of tokens
     $objParser = new PHPExcel_Calculation_FormulaParser($formula);
     // Loop trough parsed tokens and create an executable formula
     $inFunction = false;
     $token = null;
     for ($i = 0; $i < $objParser->getTokenCount(); $i++) {
         $token = $objParser->getToken($i);
         // Is it a cell reference? Not in a function?
         if ($token->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND && $token->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_RANGE && strpos($token->getValue(), ':') === false && !$inFunction) {
             // Adjust reference
             $reference = str_replace('$', '', $token->getValue());
             // Get value
             $calculatedValue = null;
             if ($pCell->getParent()->getCell($reference)->getValue() instanceof PHPExcel_RichText) {
                 $calculatedValue = $pCell->getParent()->getCell($reference)->getValue()->getPlainText();
             } else {
                 $calculatedValue = $pCell->getParent()->getCell($reference)->getCalculatedValue();
             }
             if (is_string($calculatedValue)) {
                 $calculatedValue = '"' . $calculatedValue . '"';
             }
             // Add to executable formula array
             array_push($executableFormulaArray, $calculatedValue);
             continue;
         }
         // Is it a cell reference? In a function?
         if ($token->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND && $token->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_RANGE && $inFunction) {
             // Adjust reference
             $reference = str_replace('$', '', $token->getValue());
             // Add to executable formula array
             array_push($executableFormulaArray, '$this->extractRange("' . $reference . '", $pCell->getParent())');
             continue;
         }
         // Is it a concatenation operator?
         if ($token->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORINFIX && $token->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_CONCATENATION) {
             // Add to executable formula array
             array_push($executableFormulaArray, '.');
             continue;
         }
         // Is it a logical operator?
         if ($token->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORINFIX && $token->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_LOGICAL) {
             // Temporary variable
             $tmp = '';
             switch ($token->getValue()) {
                 case '=':
                     $tmp = '==';
                     break;
                 case '<>':
                     $tmp = '!=';
                     break;
                 default:
                     $tmp = $token->getValue();
             }
             // Add to executable formula array
             array_push($executableFormulaArray, $tmp);
             continue;
         }
         // Is it a subexpression?
         if ($token->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_SUBEXPRESSION) {
             // Temporary variable
             $tmp = '';
             switch ($token->getTokenSubType()) {
                 case PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_START:
                     $tmp = '(';
                     break;
                 case PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP:
                     $tmp = ')';
                     break;
             }
             // Add to executable formula array
             array_push($executableFormulaArray, $tmp);
             continue;
         }
         // Is it a function?
         if ($token->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION) {
//.........这里部分代码省略.........
开发者ID:teungri,项目名称:RequirementsApp,代码行数:101,代码来源:Calculation.php

示例12: bindValue

 /**
  * Bind value to a cell
  *
  * @param  PHPExcel_Cell  $cell  Cell to bind value to
  * @param  mixed $value          Value to bind in cell
  * @return boolean
  */
 public function bindValue(PHPExcel_Cell $cell, $value = null)
 {
     // sanitize UTF-8 strings
     if (is_string($value)) {
         $value = PHPExcel_Shared_String::SanitizeUTF8($value);
     }
     // Find out data type
     $dataType = parent::dataTypeForValue($value);
     // Style logic - strings
     if ($dataType === PHPExcel_Cell_DataType::TYPE_STRING && !$value instanceof PHPExcel_RichText) {
         //    Test for booleans using locale-setting
         if ($value == PHPExcel_Calculation::getTRUE()) {
             $cell->setValueExplicit(TRUE, PHPExcel_Cell_DataType::TYPE_BOOL);
             return true;
         } elseif ($value == PHPExcel_Calculation::getFALSE()) {
             $cell->setValueExplicit(FALSE, PHPExcel_Cell_DataType::TYPE_BOOL);
             return true;
         }
         // Check for number in scientific format
         if (preg_match('/^' . PHPExcel_Calculation::CALCULATION_REGEXP_NUMBER . '$/', $value)) {
             $cell->setValueExplicit((double) $value, PHPExcel_Cell_DataType::TYPE_NUMERIC);
             return true;
         }
         // Check for fraction
         if (preg_match('/^([+-]?) *([0-9]*)\\s?\\/\\s*([0-9]*)$/', $value, $matches)) {
             // Convert value to number
             $value = $matches[2] / $matches[3];
             if ($matches[1] == '-') {
                 $value = 0 - $value;
             }
             $cell->setValueExplicit((double) $value, PHPExcel_Cell_DataType::TYPE_NUMERIC);
             // Set style
             $cell->getParent()->getStyle($cell->getCoordinate())->getNumberFormat()->setFormatCode('??/??');
             return true;
         } elseif (preg_match('/^([+-]?)([0-9]*) +([0-9]*)\\s?\\/\\s*([0-9]*)$/', $value, $matches)) {
             // Convert value to number
             $value = $matches[2] + $matches[3] / $matches[4];
             if ($matches[1] == '-') {
                 $value = 0 - $value;
             }
             $cell->setValueExplicit((double) $value, PHPExcel_Cell_DataType::TYPE_NUMERIC);
             // Set style
             $cell->getParent()->getStyle($cell->getCoordinate())->getNumberFormat()->setFormatCode('# ??/??');
             return true;
         }
         // Check for percentage
         if (preg_match('/^\\-?[0-9]*\\.?[0-9]*\\s?\\%$/', $value)) {
             // Convert value to number
             $value = (double) str_replace('%', '', $value) / 100;
             $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_NUMERIC);
             // Set style
             $cell->getParent()->getStyle($cell->getCoordinate())->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00);
             return true;
         }
         // Check for currency
         $currencyCode = PHPExcel_Shared_String::getCurrencyCode();
         $decimalSeparator = PHPExcel_Shared_String::getDecimalSeparator();
         $thousandsSeparator = PHPExcel_Shared_String::getThousandsSeparator();
         if (preg_match('/^' . preg_quote($currencyCode) . ' *(\\d{1,3}(' . preg_quote($thousandsSeparator) . '\\d{3})*|(\\d+))(' . preg_quote($decimalSeparator) . '\\d{2})?$/', $value)) {
             // Convert value to number
             $value = (double) trim(str_replace(array($currencyCode, $thousandsSeparator, $decimalSeparator), array('', '', '.'), $value));
             $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_NUMERIC);
             // Set style
             $cell->getParent()->getStyle($cell->getCoordinate())->getNumberFormat()->setFormatCode(str_replace('$', $currencyCode, PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_USD_SIMPLE));
             return true;
         } elseif (preg_match('/^\\$ *(\\d{1,3}(\\,\\d{3})*|(\\d+))(\\.\\d{2})?$/', $value)) {
             // Convert value to number
             $value = (double) trim(str_replace(array('$', ','), '', $value));
             $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_NUMERIC);
             // Set style
             $cell->getParent()->getStyle($cell->getCoordinate())->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_USD_SIMPLE);
             return true;
         }
         // Check for time without seconds e.g. '9:45', '09:45'
         if (preg_match('/^(\\d|[0-1]\\d|2[0-3]):[0-5]\\d$/', $value)) {
             // Convert value to number
             list($h, $m) = explode(':', $value);
             $days = $h / 24 + $m / 1440;
             $cell->setValueExplicit($days, PHPExcel_Cell_DataType::TYPE_NUMERIC);
             // Set style
             $cell->getParent()->getStyle($cell->getCoordinate())->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME3);
             return true;
         }
         // Check for time with seconds '9:45:59', '09:45:59'
         if (preg_match('/^(\\d|[0-1]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$/', $value)) {
             // Convert value to number
             list($h, $m, $s) = explode(':', $value);
             $days = $h / 24 + $m / 1440 + $s / 86400;
             // Convert value to number
             $cell->setValueExplicit($days, PHPExcel_Cell_DataType::TYPE_NUMERIC);
             // Set style
             $cell->getParent()->getStyle($cell->getCoordinate())->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4);
             return true;
//.........这里部分代码省略.........
开发者ID:xVirusproj3ct,项目名称:site_web_phf,代码行数:101,代码来源:AdvancedValueBinder.php

示例13: _calculateFormulaValue

 /**
  *	Parse a cell formula and calculate its value
  *
  *	@param	string			$formula	The formula to parse and calculate
  *	@param	string			$cellID		The ID (e.g. A3) of the cell that we are calculating
  *	@param	PHPExcel_Cell	$pCell		Cell to calculate
  *	@return	mixed
  *	@throws	Exception
  */
 public function _calculateFormulaValue($formula, $cellID = null, PHPExcel_Cell $pCell = null)
 {
     //		echo '<b>'.$cellID.'</b><br />';
     $cellValue = '';
     //	Basic validation that this is indeed a formula
     //	We simply return the "cell value" (formula) if not
     $formula = trim($formula);
     if ($formula[0] != '=') {
         return self::_wrapResult($formula);
     }
     $formula = trim(substr($formula, 1));
     $formulaLength = strlen($formula);
     if ($formulaLength < 1) {
         return self::_wrapResult($formula);
     }
     // Is calculation cacheing enabled?
     if (!is_null($cellID)) {
         if ($this->_calculationCacheEnabled) {
             // Is the value present in calculation cache?
             //				echo 'Testing cache value<br />';
             if (isset($this->_calculationCache[$pCell->getParent()->getTitle()][$pCell->getCoordinate()])) {
                 //					echo 'Value is in cache<br />';
                 $this->_writeDebug($cellID, 'Testing cache value');
                 //	Is cache still valid?
                 if (time() + microtime() - $this->_calculationCache[$pCell->getParent()->getTitle()][$pCell->getCoordinate()]['time'] < $this->_calculationCacheExpirationTime) {
                     //						echo 'Cache time is still valid<br />';
                     $this->_writeDebug($cellID, 'Retrieving value from cache');
                     // Return the cached result
                     $returnValue = $this->_calculationCache[$pCell->getParent()->getTitle()][$pCell->getCoordinate()]['data'];
                     //						echo 'Retrieving data value of '.$returnValue.' for '.$pCell->getCoordinate().' from cache<br />';
                     if (is_array($returnValue)) {
                         return array_shift(PHPExcel_Calculation_Functions::flattenArray($returnValue));
                     }
                     return $returnValue;
                 } else {
                     //						echo 'Cache has expired<br />';
                     $this->_writeDebug($cellID, 'Cache value has expired');
                     //	Clear the cache if it's no longer valid
                     unset($this->_calculationCache[$pCell->getParent()->getTitle()][$pCell->getCoordinate()]);
                 }
             }
         }
     }
     $this->debugLogStack[] = $cellID;
     //	Parse the formula onto the token stack and calculate the value
     $cellValue = $this->_processTokenStack($this->_parseFormula($formula), $cellID, $pCell);
     array_pop($this->debugLogStack);
     // Save to calculation cache
     if (!is_null($cellID)) {
         if ($this->_calculationCacheEnabled) {
             $this->_calculationCache[$pCell->getParent()->getTitle()][$pCell->getCoordinate()]['time'] = time() + microtime();
             $this->_calculationCache[$pCell->getParent()->getTitle()][$pCell->getCoordinate()]['data'] = $cellValue;
         }
     }
     //	Return the calculated value
     if (is_array($cellValue)) {
         $cellValue = array_shift(PHPExcel_Calculation_Functions::flattenArray($cellValue));
     }
     return $cellValue;
 }
开发者ID:portokallidis,项目名称:Metamorphosis-Meducator,代码行数:69,代码来源:Calculation.php


注:本文中的PHPExcel_Cell::getParent方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。