private function PHPExcel_Calculation::_convertMatrixReferences in Loft Data Grids 6.2
Same name and namespace in other branches
- 7.2 vendor/phpoffice/phpexcel/Classes/PHPExcel/Calculation.php \PHPExcel_Calculation::_convertMatrixReferences()
1 call to PHPExcel_Calculation::_convertMatrixReferences()
- PHPExcel_Calculation::_parseFormula in vendor/phpoffice/phpexcel/Classes/PHPExcel/Calculation.php
File
- vendor/phpoffice/phpexcel/Classes/PHPExcel/Calculation.php, line 2652
Class
- PHPExcel_Calculation
- PHPExcel_Calculation (Multiton)
Code
private function _convertMatrixReferences($formula) {
static $matrixReplaceFrom = array(
'{',
';',
'}',
);
static $matrixReplaceTo = array(
'MKMATRIX(MKMATRIX(',
'),MKMATRIX(',
'))',
);
if (strpos($formula, '{') !== FALSE) {
if (strpos($formula, '"') !== FALSE) {
$temp = explode('"', $formula);
$openCount = $closeCount = 0;
$i = FALSE;
foreach ($temp as &$value) {
if ($i = !$i) {
$openCount += substr_count($value, '{');
$closeCount += substr_count($value, '}');
$value = str_replace($matrixReplaceFrom, $matrixReplaceTo, $value);
}
}
unset($value);
$formula = implode('"', $temp);
}
else {
$openCount = substr_count($formula, '{');
$closeCount = substr_count($formula, '}');
$formula = str_replace($matrixReplaceFrom, $matrixReplaceTo, $formula);
}
if ($openCount < $closeCount) {
if ($openCount > 0) {
return $this
->_raiseFormulaError("Formula Error: Mismatched matrix braces '}'");
}
else {
return $this
->_raiseFormulaError("Formula Error: Unexpected '}' encountered");
}
}
elseif ($openCount > $closeCount) {
if ($closeCount > 0) {
return $this
->_raiseFormulaError("Formula Error: Mismatched matrix braces '{'");
}
else {
return $this
->_raiseFormulaError("Formula Error: Unexpected '{' encountered");
}
}
}
return $formula;
}