PHPExcel不使用公式编写最后一个单元格

问题描述 投票:0回答:1

我正在PHP 5.6上使用PHPExcel 1.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');

如果我只是简单地从公式中删除“ =”(所以我使用一个普通字符串代替了公式,那么将显示单元格内容和背景。

enter image description here

但是如果我保留公式,它们将显示为空白单元格:

enter image description here

然后,如果我将数据库结果从30k限制为15k,则确实会显示单元格,并且公式可以正常工作:

enter image description here

我真的不知道我正在运行哪种限制或错误,但这没有太大意义。

除此之外,我正在使用此文件:

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');

也许我接下来还将尝试使用不同版本的PHPExcel库,或者尝试从头开始在另一个地方重现一个孤立的示例,并查看其行为是否相同。

php excel phpexcel
1个回答
0
投票
来自此:

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

至此:

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');

现在,总计单元格已通过背景和公式正确生成。

© www.soinside.com 2019 - 2024. All rights reserved.