Сегодня я чувствую себя глупо, так что прости меня. PphExcel 1.8 и Php 5.5
Я использую VLOOKUP …
Когда я записываю его и загружаю файл в excel, все хорошо, но когда я пытаюсь получить разрешенное значение в phpExcel … по-разному, я получаю 0 … что является неправильным результатом.
Не уверен, но, возможно, это потому, что это на другом листе
формула, которую я использую
=IFERROR(VLOOKUP(V3,zLOOKUPS!A2:B3,2,FALSE),zLOOKUPS!B1)
Значение в V3 является строкой, и результат, возвращаемый из поиска, должен быть числовым … Я думаю, что он возвращает 0, потому что это то, что находится в ячейке B1 … но, конечно, он не должен быть ошибочным в первое место.
Сводит меня с ума.
Если вы задаете формулу, но не значение, 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, он все равно пересчитывается либо потому, что игнорирует настройку, либо потому, что он достаточно умен, чтобы понять, что его нужно вычислять.
Других решений пока нет …