Я использую PhpExcel
для своего приложения и вижу ошибку. Я попытался обработать исключение с try{}catch(){}
но он не работает. Как обрабатывать исключение с помощью PhpExcel? Вот мой код:
function import($excelObj) { $sheet=$excelObj->getActiveSheet(); $cell = $sheet->getCellByColumnAndRow(1, 10);//assume we need calculate at col 1, row 10 try { //This line seen error, but cannot echo in catch. $val = $cell->getCalculatedValue(); // $cell contain a formula, example: `=A1+A6-A8` // with A1 is constant, A6 is formula `=A2*A5` // and A8 is another `=A1/(A4*100)-A7` return $val; } catch (Exception $e) { echo $e->getTraceAsTring(); } }
Спасибо за помощь!
Механизм вычислений должен генерировать нормальное исключение PHP, которое можно использовать. Фронтальная логика, используемая для отладки ошибок двигателя вычислений:
// enable debugging PHPExcel_Calculation::getInstance()->writeDebugLog = true; $formulaValue = $sheet->getCell($cell)->getValue(); echo '<b>'.$cell.' Value is </b>'.$formulaValue."<br />\n"; $calculate = false; try { $tokens = PHPExcel_Calculation::getInstance()->parseFormula($formulaValue,$sheet->getCell($cell)); echo '<b>Parser Stack :-</b><pre>'; print_r($tokens); echo '</pre>'; $calculate = true; } catch (Exception $e) { echo "PARSER ERROR: ".$e->getMessage()."<br />\n"; echo '<b>Parser Stack :-</b><pre>'; print_r($tokens); echo '</pre>'; } if ($calculate) { // calculate try { $cellValue = $sheet->getCell($cell)->getCalculatedValue(); } catch (Exception $e) { echo "CALCULATION ENGINE ERROR: ".$e->getMessage()."<br />\n"; echo '<h3>Evaluation Log:</h3><pre>'; print_r(PHPExcel_Calculation::getInstance()->debugLog); echo '</pre>'; } }
Это дает много дополнительной информации о том, как работает вычислительный механизм, который может быть чрезвычайно полезен при отладке.