2014-12-31 3 views
1

Сегодня я чувствую себя глупо, поэтому простите меня. PphExcel 1,8 и 5,5 PhpphpExcel VLOOKUP не работает с несколькими листами

Я использую ВПР ...

Когда я пишу это и загрузить файл в первенствовать все хорошо, но когда я пытаюсь получить разрешенное значение в PHPExcel ... в переменном я получаю 0 ... что является неправильным результатом. Не уверен, но, возможно, это происходит потому, что она находится на другом листе

формула я использую

=IFERROR(VLOOKUP(V3,zLOOKUPS!A2:B3,2,FALSE),zLOOKUPS!B1) 

Значение в V3 является строкой, и результат возвращается из поиска должна быть numeric ... Я думаю, что он возвращает 0, потому что это то, что находится в ячейке B1 ... но, конечно же, это не должно быть ошибкой.

Вождение меня немного орехов.

ответ

0

Если вы установили формулу, но не значение, Excel предполагает, что значение является хорошим, как есть, и загружает файл без пересчета, чтобы сэкономить время. Если вы нажмете F9, он даже не будет пересчитан. Только если вы коснетесь ячейки в Excel, она будет пересчитана.

Решение состоит в том, чтобы сказать Excel, что формулы не были предварительно вычислены путем установки setPreCalculateFormulas в PHPExcel писательницы объекта к ложным:

$objWriter = PHPExcel_IOFactory::createWriter($this->_workbook, 'Excel2007'); 
    if ($this->_hasCharts) $objWriter->setIncludeCharts(TRUE); 
    $objWriter->setPreCalculateFormulas(FALSE); 
    $objWriter->save('php://output'); 

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

Примечание: это не то, что происходит при загрузке файла в Libre Office, он все равно пересчитывает либо из-за того, что он игнорирует параметр, либо потому, что он достаточно умен, чтобы понять, что ему нужно вычислить.

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