2012-04-13 7 views
1

Я тестировал, что если вы используете vlookup для поиска в самостоятельном листе «= vlookup (h2, A2: B2000, 2, False)» и возвращающем значение из другого листа «= Список поставщиков! A2» и «= vlookup (SupplierList! H3, A2: B2000, 2, False) "тоже прекрасны.Недопустимая координата ячеек phpExcel

так почему именно «= vlookup (h3, SupplierList! A2: B2000, 2, False)» приводит в заблуждение?

--------------------------- ОШИБКА СООБЩЕНИЯ ----------------- --------------

Fatal error: Uncaught exception 'Exception' with message 'PO!G2 -> Invalid cell coordinate A' in C:\Program Files\EasyPHP-5.3.6.0\www\ExcelImporter\Classes\PHPExcel\Cell.php:288 Stack trace: #0 C:\Program Files\EasyPHP-5.3.6.0\www\ExcelImporter\Classes\PHPExcel\Cell.php(204): PHPExcel_Cell->getCalculatedValue() #1 C:\Program Files\EasyPHP-5.3.6.0\www\ExcelImporter\Documentation\Examples\index.php(36): PHPExcel_Cell->getFormattedValue() #2 {main} thrown in C:\Program Files\EasyPHP-5.3.6.0\www\ExcelImporter\Classes\PHPExcel\Cell.php on line 288

--------------------------- Сообщение об ошибке -------------------------------

Ячейка с формулой, как этот **=IF(ISERROR(VLOOKUP(H2349,'Supplier List'!A:B,2,FALSE)),"-",VLOOKUP(H2349,'Supplier List'!A:B,2,FALSE))**

+0

Ну, сообщение указывает, что где-то в дереве вычислений есть ссылка на ячейку «PO! G2», которая содержит формулу, которая должна быть рассчитана ... так что такое значение ячейки «PO! G2» «? –

ответ

0

Слишком долго, чтобы быть комментарием ...

При отладке ошибки вычислений, я использую следующее:

function testFormula($sheet,$cell) { 
    $formulaValue = $sheet->getCell($cell)->getValue(); 
    echo '<b>'.$cell.' Value is </b>'.$formulaValue."<br />\n"; 
    $expectedValue = $sheet->getCell($cell)->getOldCalculatedValue(); 
    echo '<b>'.$cell.' Expected Value is </b>'.((!is_null($expectedValue)) ? $expectedValue : 'UNKNOWN')."<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) { 
     try { 
      $cellValue = $sheet->getCell($cell)->getCalculatedValue(); 
      echo '<b>'.$cell.' Calculated Value is </b>'.$cellValue."<br />\n"; 

      echo '<h3>Evaluation Log:</h3><pre>'; 
      print_r(PHPExcel_Calculation::getInstance()->debugLog); 
      echo '</pre>'; 
     } 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>'; 
     } 
    } 
} 


$sheet = $objPHPExcel->getActiveSheet(); 
PHPExcel_Calculation::getInstance()->writeDebugLog = true; 


testFormula($sheet,'A4'); 

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

Если вы просто хотите, чтобы отключить вычисление значения ячейки при сохранении файла, то вы можете выполнить следующую команду после инстанцировании Йор писатель, но перед выполнением команды сохранения:

$objWriter->setPreCalculateFormulas(FALSE); 
-1

пункт распознаватель Esse проблема- «Invalid ячейка «$ this-> caracteres = array ( '', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I' , 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'X', 'Y', 'W', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', ' AH ',' AI ',' AJ ',' AK ',' AL ',' AM ', ' AN ',' AO ',' AP ',' AQ ',' AR ',' AS ',' AT ',' AU ',' AV ',' AX ' , 'AY', 'AW', 'AZ');

adicione mais caracteres, «AA», «AB», «AC», «AD», «AE», «AF», «AG», «AH», «AI», «AJ», AK ',' AL ',' AM ', ' AN ',' AO ',' AP ',' AQ ',' AR ',' AS ',' AT ',' AU ',' AV ',' AX ',' AY ',' AW ',' AZ '); ....

английский , чтобы решить эту проблему "координации Invalid ячейки" $ this-> символы = массив ( '', 'A', 'B', 'C', 'D', 'E' , 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'X', 'Y', 'W', 'Z' 'AA', 'AB', 'AC', 'AD ',' AE ',' AF ',' AG ',' AH ',' AI ',' AJ ',' AK ',' AL ',' AM ' ' AN ',' AO ',' AP ',' «AQ», «AR», «AS», «AT», «AU», «AV», «AX», «AY», «AW», «AZ»);

добавить еще символы, 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', ' AK ',' AL ',' AM ' ' AN ',' AO ',' AP ',' AQ ',' AR ',' AS ',' AT ',' AU ',' AV ',' AX ' , 'AY', 'AW', 'AZ'); ....

Смежные вопросы