Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPExcel未使用公式写入最后一个单元格_Php_Excel_Phpexcel - Fatal编程技术网

PHPExcel未使用公式写入最后一个单元格

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('

我使用PHP5.6上的PHPEXCEL1.7.8从数据库表导出Excel文件

如果结果集的行数低于20.000行,则会显示包含总计公式的总计行

如果结果集大于20.000,则不显示包含公式的合计单元格,背景色也不显示

这是生成最后一行总计的代码:

$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');
现在,单元格的总数是用背景和公式正确生成的