PHPexcel公式IFERROR

时间:2015-07-20 08:42:16

标签: php formula phpexcel

我正在使用PHP excel 1.8.0。我到处搜索但我不明白为什么发生以下错误并且我的excel文件已损坏。

Uncaught exception 'PHPExcel_Calculation_Exception' with message 'Worksheet!K2 -> Formula Error: An unexpected error occured'

我必须使用ISO 8859-2编码

$formula = iconv('ISO-8859-2', 'UTF-8//IGNORE//TRANSLIT', '=IFERROR(IF(OR(C'.$row.'="string1";C'.$row.'="strin2");D'.$row.';" ");" ")');
$objPHPExcel->getActiveSheet()->setCellValue($where, $formula);

我尝试在没有=的情况下设置公式。之后,当我打开我的Excel文件时,所有公式都正确设置,没有=标记。然后,如果我手动将其添加到公式,它的工作原理。但是使用像你可以看到的代码,公式就会被打破。 我还尝试在使用iconv之后添加=,但没有任何更改文件仍然被破坏。如果有人可以帮我解决这个问题,我会很高兴。

2 个答案:

答案 0 :(得分:1)

来自PHPExcel documentation

将公式写入单元格

  

在Excel文件中,公式始终存储在英文版Microsoft Office Excel中,并且PHPExcel以此格式在内部处理所有公式。这意味着以下规则成立:

  • 小数分隔符是'。' (周期)
  • 函数参数分隔符是',' (逗号)
  • 矩阵行分隔符是&#39 ;;' (分号)
  • 必须使用英文函数名称
  

这与使用哪种语言版本的Microsoft Office Excel创建Excel文件无关。

您使用分号(;)作为函数参数分隔符

答案 1 :(得分:0)

如果导出时在IFERROR的工作中遇到问题,则可以使用

$sheet->setCellValue($cell_name, "=IF(ISERROR($val1*$val2),0,$val1*$val2)");

它对我有用:)