PHPExcel未使用公式写入最后一个单元格
我使用PHP5.6上的PHPEXCEL1.7.8从数据库表导出Excel文件 如果结果集的行数低于20.000行,则会显示包含总计公式的总计行 如果结果集大于20.000,则不显示包含公式的合计单元格,背景色也不显示 这是生成最后一行总计的代码:PHPExcel未使用公式写入最后一个单元格,php,excel,phpexcel,Php,Excel,Phpexcel,我使用PHP5.6上的PHPEXCEL1.7.8从数据库表导出Excel文件 如果结果集的行数低于20.000行,则会显示包含总计公式的总计行 如果结果集大于20.000,则不显示包含公式的合计单元格,背景色也不显示 这是生成最后一行总计的代码: $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, Yii::t('asientos_excel_diario', 'TOTALES')); $formula = '=SUM('
$objPHPExcel->getActiveSheet()->setCellValue('B' . $i, Yii::t('asientos_excel_diario', 'TOTALES'));
$formula = '=SUM(' . "M{$pos_ini_suma_totales}:M" . $ultima_fila . ')';
$objPHPExcel->getActiveSheet()->setCellValue('M' . $i, $formula);
$objPHPExcel->getActiveSheet()->getStyle('M' . $i)->getNumberFormat()->setFormatCode('#,##0.00');
$formula = '=SUM(' . "N{$pos_ini_suma_totales}:N" . $ultima_fila . ')';
$objPHPExcel->getActiveSheet()->setCellValue('N' . $i, $formula);
$objPHPExcel->getActiveSheet()->getStyle('N' . $i)->getNumberFormat()->setFormatCode('#,##0.00');
$objPHPExcel->getActiveSheet()->getStyle('A5:N5')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setARGB('FFA0A0A0');
$objPHPExcel->getActiveSheet()->getStyle('A' . $i . ':' . 'N' . $i)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setARGB('FFA0A0A0');
如果我只是从公式中删除“=”(因此公式中有一个普通字符串),单元格内容就会显示出来
但如果我不使用公式,它们将显示为空白单元格:
然后,如果我将DB结果从30k限制到15k,单元格会显示出来,公式也会正常工作:
我真的不知道我在运行什么样的限制或bug,但这没有太多意义
除此之外,我正在使用以下命令编写文件:
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
也许我下一步也会尝试使用不同版本的PHPExcel库,或者尝试在另一个地方从头开始编写一个独立的示例,看看它的行为是否相同。我已通过更改输出文件的编写器格式来解决此问题: 由此:
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
为此:
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
现在,单元格的总数是用背景和公式正确生成的