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

标签 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 正确处理公式?

最佳答案

我在使用 LibreOffice 5.0.5.2 时遇到了同样的问题。

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

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

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

关于php - 在 PHPExcel (Excel2007) 上使用公式的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23920238/

相关文章:

php - 如何一次使用多个if语句?

php - 如何观察网络流量以进行 curl 调试

php - 选择一个子字符串(日期)并进行转换

export - 无论如何,PHPExcel中是否可以在导出中隐藏值?

sql-server - 使用 SSIS 将巨大的 excel (xlsx) 导入到 SQL Server

php - 使用 javascript 和 php 更改 div 的内容包括

mysql - CodeIgniter PHPExcel导出到excel出现16位varchar数据类型错误

PHPExcel : Data validation not working in . xls 格式

php - Codeigniter/PHPExcel 中无法重新声明 Excel 类错误

python - 在 Openpyxl 中设置样式