Как обрабатывать исключения с PhpExcel? - PullRequest
1 голос
/ 21 марта 2012

Я использую 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();
    }
}

Спасибо за помощь!

1 Ответ

2 голосов
/ 21 марта 2012

Механизм вычислений должен выдавать обычное исключение PHP, которое можно отловить.Логика внешнего интерфейса, которую я использую для отладки ошибок механизма вычислений:

<code>//  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 '
';$ Calculate = True;} catch (Exception $ e) {echo "PARSER ERROR:". $ e-> getMessage (). "\ n "; echo ' Стек анализатора: -
';
    print_r($tokens);
    echo '
';} if ($ Рассчитать) {// вычислить try {$ cellValue = $ sheet-> getCell ($ cell) -> getCalculatedValue ();} catch (Exception $ e) {echo "ОШИБКА ДВИГАТЕЛЯ РАСЧЕТА:". $ e-> getMessage (). "\ n "; echo '

Журнал оценки:

';
        print_r(PHPExcel_Calculation::getInstance()->debugLog);
        echo '
';}}

Это дает много дополнительной информации о том, как работает механизм вычислений, что может быть чрезвычайно полезнопри отладке.

...