使用PHPExcel上的公式问题(Excel2007)

时间:2014-05-28 19:26:14

标签: php phpexcel xlsx

当我尝试使用公式设置单元格的值时,例如:setCellValue('C1','= A1 + B1'),生成的文件没有单元格的计算值。

我有以下脚本:

<?php

require_once '../vendor/autoload.php';
date_default_timezone_set('America/Sao_Paulo');

$objPHPExcel = new PHPExcel();

$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setCellValue('A1', 5)
    ->setCellValue('B1', 10)
    ->setCellValue('C1', '=A1+B1');
echo $objPHPExcel->getActiveSheet()->getCell('C1')->getCalculatedValue() . PHP_EOL;

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('a.xlsx');

当我用libreoffice打开a.xlsx时,单元格C1显示字符串“0”。奇怪的是,当我点击单元格时,它实际显示“= A1 + B1”,但不是最终结果。

如何让PHPExcel正确使用公式?

1 个答案:

答案 0 :(得分:5)

我对LibreOffice 5.0.5.2也有同样的问题。

更改LibreOffice Calc中的以下选项对我有用:

  • 转到工具/选项... / LibreOffice Calc / Formula
  • 在“重新计算文件加载”,“Excel 2007及更新版本”部分中,将值更改为“始终重新计算”

发现 https://ask.libreoffice.org/en/question/12165/calc-auto-recalc-does-not-work/