PHP_Calculation_Exception - 可能与德语版的Excel版本有关

时间:2014-01-22 11:38:23

标签: php exception phpexcel

我正在使用德语Excel版本并将以下公式写入Cell AM27:

=WENNFEHLER(AN61/(AN$61+AN$62+AN$63);"")

这相当于英文公式:

=iferror(AM61/(AM$61+AM$62+AM$63),"")

现在我正在使用PHPExcel加载并保存文件并获得此异常:

PHPExcel_Calculation_Exception: MySheetName!AN27 -> Formula Error: Unexpected ,

我的问题是

  1. 当使用英语Excel版本和英语公式时会发生同样的错误吗?
  2. 我有办法解决这个例外吗?
  3. 或者我可以处理工作表的其他部分并保存文件而不计算此单元格吗?
  4. 感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

开发人员文档的第4.6.4节:

将公式写入单元格时:

  • 小数分隔符为.(句点)
  • 函数参数分隔符为,(逗号)
  • 矩阵行分隔符为;(分号)
  • 必须使用英文函数名称

e.g。

$objPHPExcel->getActiveSheet()
    ->setCellValue(
        'AM27',
        '=IFERROR(AM61/(AM$61+AM$62+AM$63),"")'
    );

如果要使用德语函数名称和分隔符编写公式,则需要使用语言环境函数来处理德语和英语之间的转换(如开发人员文档的第4.6.5节所述):

$locale = 'de';
$validLocale = PHPExcel_Settings::setLocale($locale);

$objPHPExcel->getActiveSheet()
    ->setCellValue(
        'AM27',
        PHPExcel_Calculation::getInstance()
            ->translateFormulaToEnglish(
                '=WENNFEHLER(AM61/(AM$61+AM$62+AM$63);"")'
            )
    );