我得出结论,如果单元格包含公式,则getOldCalculatedValue()返回已计算的公式,如果单元格不包含公式,则返回值。 Mark Baker's post证实了我的假设(虽然这篇文章是2011年):
$value = $objPHPExcel->setActiveSheetIndex(0)
->getCell('G'.$i)
->getValue();
Will return the actual formula if the cell contains a formula, or the
value if the cell contains a value.
$value = $objPHPExcel->setActiveSheetIndex(0)
->getCell('G'.$i)
->getCalculatedValue();
Will return the calculated value if the cell contains a formula, or the value
if the cell contains a value.
$value = $objPHPExcel->setActiveSheetIndex(0)
->getCell('G'.$i)
->getOldCalculatedValue();
Will return the previous result of a calculation if the cell contains a formula,
or the value if the cell contains a value.
我用一个单元格A1创建了xlsx(Excel 2007)。 A1的内容是字符串'foo'。当我打电话
$reader = new PHPExcel_Reader_Excel2007();
$excel = $reader->load(Input::file("pricelist")->getRealPath());
$worksheet = $excel->setActiveSheetIndex(0);
var_dump($worksheet->getCell('A1')->getOldCalculatedValue());
它打印NULL。如果我将函数更改为getCalculatedValue()或getValue(),它可以正常工作。我正在使用PHPExcel 1.8.0。
答案 0 :(得分:3)
严格来说,getOldCalculatedValue()可能返回NULL的原因有几个,即使对于包含公式的单元格也是如此。
主要原因是:
如果在输入公式后的某个时刻禁用自动计算,最后可能会出现更多问题,但随后的数据更改会影响公式,因为它们不会反映在旧公式中计算值