PHPEXCEL getCalculatedValue或getFormattedValue返回致命错误

时间:2015-04-30 11:39:19

标签: php phpexcel

我有一个mime-type“application / octet-stream; charset = binary”和扩展名“.xlsx”的文件。 PHPExcel_IOFactory :: identify($ this-> file)返回'Excel2007'。我像这样创建我的读者:

$this->objectReader = PHPExcel_IOFactory::createReaderForFile($this->file);

当我尝试使用公式获取单元格值时,我只能以两种方式执行此操作:

1)$sheet->getCell($columns[$i].$row->getRowIndex())->getValue() 
//return the actual formula as a string
2)$sheet->getCell($columns[$i].$row->getRowIndex())->getOldCalculatedValue() 
//returns the oldCalculated value which is not always corret (for example the value in the cell is 17.4% and it returns 0.17)

当我转储$ sheet-> getCell($ columns [$ i]。$ row-> getRowIndex())对象时,输出以fallowing开头:

object(PHPExcel_Cell)[142370]
  private '_value' => string '=IFERROR(IF(C$6="yes",IF(ISBLANK(INDIRECT(ADDRESS($AN15,MATCH($B$6,INDIRECT("'"&C$7&"'!"&$AN$9-1&":"&$AN$9-1),0),,,C$7),TRUE)),"",INDIRECT(ADDRESS($AN15,MATCH($B$6,INDIRECT("'"&C$7&"'!"&$AN$9-1&":"&$AN$9-1),0),,,C$7),TRUE)),""),"")' (length=231)
  private '_calculatedValue' => float 0.1744360902255639
  private '_dataType' => string 'f' (length=1)
  private '_parent' =>...

有正确的价值,但我无法访问它... 当我尝试使用getFormattedValue()或getCalculatedValue()获取单元格值时,输出是一个致命的致命错误:

Catchable fatal error: Argument 2 passed to PHPExcel_Calculation_LookupRef::INDIRECT() must be an instance of PHPExcel_Cell, boolean given

如何解决这个问题呢?我真的被困住了,不知道。谢谢。

1 个答案:

答案 0 :(得分:3)

致电

$sheet->getCell($columns[$i].$row->getRowIndex())->getValue() 

将返回包含公式

的任何单元格的实际公式

转储单元格对象时可以看到的值_calculatedValue是您可以使用

调用检索的值$sheet->getCell($columns[$i].$row->getRowIndex())->getOldCalculatedValue()
17.4%

在这种情况下,你说它是不正确的.....你错了,这是正确的:0.174 % ...区别在于应用$sheet->getCell($columns[$i].$row->getRowIndex())->getCalculatedValue() 格式掩码显示MS Excel中的实际单元格值乘以100

致电时

$sheet->getCell($columns[$i].$row->getRowIndex())->getFormattedValue()

MONO_MANAGED_WATCHER

PHPExcel尝试执行单元格的公式并重新计算该值。如果这是抛出异常,您可以通过启用计算引擎的调试模式来调试计算引擎以查看它出错的位置,如this gist

中所述