PHPExcel中的公式错误

Pol*_*CPP 4 php phpexcel

我对一对公式的phpexcel有一个奇怪的问题,无法找出问题的根源.(其他简单的数学公式有效,只有这个失败).

由于php报告很长,我会直截了当地说.

像这样设置这个公式

$objPHPExcel->getActiveSheet()->setCellValue("D$cuenta_empleados", "=$'asientos_title'.K$cuadro_row" );
Run Code Online (Sandbox Code Playgroud)

把我扔了

Fatal error: Uncaught exception 'Exception' with message 'INPUT NOMINA Agosto!D8 -> Formula Error: An unexpected error occured' in /Users/PolCPP/Documents/Proyectos/Activos/beneficiat/php/inc/PHPExcel/Cell.php:293 Stack trace:
 #0 /Users/PolCPP/Documents/Proyectos/Activos/beneficiat/php/inc/PHPExcel/Writer/Excel5/Worksheet.php(455): PHPExcel_Cell->getCalculatedValue() 
 #1 /Users/PolCPP/Documents/Proyectos/Activos/beneficiat/php/inc/PHPExcel/Writer/Excel5.php(194): PHPExcel_Writer_Excel5_Worksheet->close() 
 #2 /Users/PolCPP/Documents/Proyectos/Activos/beneficiat/php/classes/Everything.class.php(2361): PHPExcel_Writer_Excel5->save('../../reports/1...') 
 #3 /Users/PolCPP/Documents/Proyectos/Activos/beneficiat/php/classes/Everything.class.php(3813): Everything->create_act_entry(Array, Array, Array, Array, Array) 
 #4 /Users/PolCPP/Documents/Proyectos/Activos/beneficiat/controllers/common/generar.php(68): Everything->gen_docs(Array, Array, Array) 
 #5 {main} thrown in /Users/PolCPP/Documents/Proyectos/Activos/beneficiat/php/inc/PHPExcel/Cell.php on line 293
Run Code Online (Sandbox Code Playgroud)

所以要调试它我删除=以避免它的计算.我在openoffice上查看它.我明白了

'ASIENTOS Agosto'.K4
Run Code Online (Sandbox Code Playgroud)

并且在它前面添加=有效.

第二个公式我有问题它是一个条件一(相同的问题,它可以生成它,但它适用于PHP)

=IF(D22>O22;D22-O22;0)
Run Code Online (Sandbox Code Playgroud)

Mar*_*ker 11

开发人员文档声明您需要使用公式中的US/UK分隔符.

引用:

4.6.4.将公式写入单元格

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

•小数分隔符为'.' (期)

•函数参数分隔符是','(逗号)

•矩阵行分隔符为';' (分号)

•必须使用英文函数名称

这与用于创建Excel文件的Microsoft Office Excel的哪个语言版本无关.

所以

=IF(D22>O22,D22-O22,0) 
Run Code Online (Sandbox Code Playgroud)

而不是

=IF(D22>O22;D22-O22;0) 
Run Code Online (Sandbox Code Playgroud)

唯一适用的例外是,如果您已按照该文档的第4.6.5节中所述设置了公式的区域设置

单元格引用中工作表的分隔符是感叹号:

'ASIENTOS Agosto'!K4 
Run Code Online (Sandbox Code Playgroud)

'ASIENTOS Agosto'.K4 
Run Code Online (Sandbox Code Playgroud)


小智 9

公式预计算默认情况下,此编写器预先计算电子表格中的所有公式.这在大型电子表格上可能很慢,甚至可能不需要.但是,您可以禁用公式预先计算:

$objWriter = new PHPExcel_Writer_CSV($objPHPExcel); $objWriter->setPreCalculateFormulas(false); 解决方案 $objWriter->save("05featuredemo.csv");