我对一对公式的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");