【问题标题】:Issue using formula on PHPExcel (Excel2007)在 PHPExcel (Excel2007) 上使用公式的问题
【发布时间】:2016-05-08 17:32:51
【问题描述】:

当我尝试使用公式设置单元格的值时,例如: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?
  • LibreOffice 4.2.4.2 420(Build:2)
  • 这很可能需要 PHPExcel 的补丁....我知道它可以在某些版本的 LibreOffice 上正常工作,但我需要做一些测试....可能需要几天时间
  • 我尝试在 Office 2013 上打开。单击启用编辑按钮后,它会计算单元格 C1。我认为问题出在我使用 PHPExcel 的方式上,但正如您所建议的那样,它可能与 LibreOffice 有关。
  • 我在使用 LibreOffice 4.2.8.2 时遇到了同样的问题。你有没有找到解决这个问题的方法?同一个 XLSX 文件,用 Excel 2010 打开没有任何问题...

标签: php phpexcel xlsx


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 2015-02-07
    • 1970-01-01
    相关资源
    最近更新 更多