To debug the problem, do the calculation in DEBUG mode:
function testFormula($sheet,$cell) { $formulaValue = $sheet->getCell($cell)->getValue(); echo 'Formula Value is' , $formulaValue , PHP_EOL; $expectedValue = $sheet->getCell($cell)->getOldCalculatedValue(); echo 'Expected Value is ' , ((!is_null($expectedValue)) ? $expectedValue : 'UNKNOWN' ) , PHP_EOL; $calculate = false; try { $tokens = PHPExcel_Calculation::getInstance()->parseFormula($formulaValue,$sheet->getCell($cell)); echo 'Parser Stack :-' , PHP_EOL; print_r($tokens); echo PHP_EOL; $calculate = true; } catch (Exception $e) { echo 'PARSER ERROR: ' , $e->getMessage() , PHP_EOL; echo 'Parser Stack :-' , PHP_EOL; print_r($tokens); echo PHP_EOL; } if ($calculate) { try { $cellValue = $sheet->getCell($cell)->getCalculatedValue(); echo 'Calculated Value is ' , $cellValue , PHP_EOL; echo 'Evaluation Log:' , PHP_EOL; print_r(PHPExcel_Calculation::getInstance()->debugLog); echo PHP_EOL; } catch (Exception $e) { echo 'CALCULATION ENGINE ERROR: ' , $e->getMessage() , PHP_EOL; echo 'Evaluation Log:' , PHP_EOL; print_r(PHPExcel_Calculation::getInstance()->debugLog); echo PHP_EOL; } } } $sheet = $objPHPExcel->getActiveSheet(); PHPExcel_Calculation::getInstance()->writeDebugLog = true; testFormula($sheet,'AF19');
The result of this should help diagnose the problem.
Mark baker
source share