Php Excel公式无法在保存的电子表格中运行

6
我是使用php excel codeplex,我正在填充一个单元格,方法如下:
$objWorksheet->setCellValue('B12', "='Other sheet'!D38");

我成功保存了文件,打开后公式确实存在,但并没有呈现出计算的值。 如果我将公式复制粘贴到另一个单元格中,它就可以运行,因此这不是公式语法的问题。 如何在保存前强制执行公式?我已经尝试过:

\PHPExcel_Calculation::getInstance($objPHPExcel)->disableCalculationCache();
\PHPExcel_Calculation::getInstance($objPHPExcel)->clearCalculationCache();

没有成功...


在保存之前,您可以强制重新计算。 - Marco Mura
1
你正在使用哪个版本的PHPExcel?自动计算保存功能最近已在开发分支代码中禁用。 - Mark Baker
1
要在保存时重新启用计算,请在保存之前调用 Writer 的 setPreCalculateFormulas() 方法。不过,我有一个快速问题,您使用的是哪个 Writer? - Mark Baker
1
感谢您的评论,我正在使用通过composer安装的dev/master版本。在writer上应用setPreCalculateFormulas()方法解决了问题,您是否想将答案添加到评论中以便我接受它? - Lucia
3个回答

17

这是解决问题的示例代码:

$spreadsheet = new \PHPExcel();
$writer = new \PHPExcel_Writer_Excel2007($spreadsheet);

//Do things with the $spreadsheet

//This is the solution, do it before saving
$writer->setPreCalculateFormulas(); 
$writer->save($saving_filepath);

非常感谢您的建议! - sdespont

2

我添加了这段代码,它对我来说是有效的。

PHPExcel_Calculation::getInstance($excelObj)->disableCalculationCache();
PHPExcel_Calculation::getInstance($excelObj)->clearCalculationCache();
$writer = PHPExcel_IOFactory::createWriter($excelObj, 'Excel2007');

$writer->setPreCalculateFormulas(true);
$writer->save($output_file);

1
对于使用 Laravel Excel 的人,您可以在 excel.php 配置文件中轻松设置导出期间的计算。只需将选项 calculate 设置为 true 即可。
/*
|--------------------------------------------------------------------------
| Pre-calculate formulas during export
|--------------------------------------------------------------------------
*/
'calculate'                   => true,

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接