PHPExcel返回Zero" 0"解析xlsx文件中的公式

时间:2015-10-17 13:02:06

标签: php excel excel-formula phpexcel

如果输入为

,我想通过PHP获取Excel函数的计算值
 '=MAX(2,3,4,6)'

然后输出

 6

为此,我用PHPExcel Library制作了两个php脚本。一个脚本将采用该公式/函数,并将生成xlsx文件。

第二个脚本将读取生成的xlsx文件,并将给出给定公式的计算值。

这个过程似乎没问题,但它无法为一些功能带来价值。比如

"=INDEX({"zz","yy","xx"},2)" 

"=INDEX({"zz","yy","xx"},MATCH(MAX({11,22,34}),{11,23,34}))"

我的第一个脚本可以生成xlsx文件及其公式的结果。

enter image description here

但是第二个脚本显示无效结果,它只显示0。

这是我的第一个脚本http://pastebin.com/vCErW5wf

这是我的第二个脚本

require_once 'a/Classes/PHPExcel/IOFactory.php';
 require_once 'a/Classes/PHPExcel.php';

 $inFile = 'index.xlsx';

 $objReader = PHPExcel_IOFactory::createReader('Excel2007');
 $objReader->setReadDataOnly(true);
 $objPHPExcel = $objReader->load($inFile);
 $value = $objPHPExcel->setActiveSheetIndex(0)->getCell('C5')->getOldCalculatedValue();

echo $value;

先谢谢。

1 个答案:

答案 0 :(得分:1)

使用getOldCalculatedValue()将返回为 MS Excel 中生成的公式单元格计算的最后一个值(即使这样,也可以在MS Excel中禁用计算,并且此值已赢得然后被设定)。 PHPExcel生成的文件不会填充此值,因此它只提供默认值0。

一般来说,在尝试评估公式值时,您应始终使用getCalculatedValue()