phpExcel VLOOKUP не работает с несколькими листами

Сегодня я чувствую себя глупо, так что прости меня. PphExcel 1.8 и Php 5.5

Я использую VLOOKUP …

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

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

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

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

Сводит меня с ума.

1

Решение

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

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

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

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

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]