phpExcel VLOOKUP不使用多张图纸

phpExcel VLOOKUP不使用多张图纸,php,phpexcel,vlookup,Php,Phpexcel,Vlookup,我今天觉得自己很笨,所以请原谅我。PphExcel 1.8和PHP5.5 我用的是VLOOKUP 当我写出来并在excel中加载文件时,一切都很好,但当我尝试在phpExcel中获取解析值时。。。在变量中,我得到0。。。这是错误的结果。 不确定,但可能是因为它在另一张纸上 我使用的公式是 =IFERROR(VLOOKUP(V3,zLOOKUPS!A2:B3,2,FALSE),zLOOKUPS!B1) V3中的值是一个字符串,从查找返回的结果应该是一个数字。。。我认为它返回0,因为这是B1单元格

我今天觉得自己很笨,所以请原谅我。PphExcel 1.8和PHP5.5

我用的是VLOOKUP

当我写出来并在excel中加载文件时,一切都很好,但当我尝试在phpExcel中获取解析值时。。。在变量中,我得到0。。。这是错误的结果。 不确定,但可能是因为它在另一张纸上

我使用的公式是

=IFERROR(VLOOKUP(V3,zLOOKUPS!A2:B3,2,FALSE),zLOOKUPS!B1)
V3中的值是一个字符串,从查找返回的结果应该是一个数字。。。我认为它返回0,因为这是B1单元格中的内容。。。但首先,它肯定不应该是错误的


让我有点发疯。

如果您设置了公式,但没有设置值,Excel会假定值是正确的,并加载文件而不重新计算以节省时间。如果按F9键,它甚至不会重新校准。只有在Excel中“触摸”单元格,它才会重新计算

解决方案是通过将PHPExcel writer对象的setPreCalculateFormulas设置为false,告知Excel尚未预先计算公式:

    $objWriter = PHPExcel_IOFactory::createWriter($this->_workbook, 'Excel2007');
    if ($this->_hasCharts) $objWriter->setIncludeCharts(TRUE);
    $objWriter->setPreCalculateFormulas(FALSE);
    $objWriter->save('php://output');
或者,必须设置每个单元格的公式值。当然,这需要用PHP计算单元格的值

注意:在Libre-Office中加载文件时不会发生这种情况,它会重新计算,原因可能是它忽略了设置,也可能是因为它足够聪明,可以意识到它需要计算