php - PHPExcel - 一次设置具有相同值的单元格
问题描述
我正在尝试编写 18000 行 x 42 列。从 col 'E' 到 'DD' 的值必须设置为值 0。我正在尝试使用增量,但我发现这是导致内存耗尽。
我的代码是这样的:
$col = $lastcol;
foreach ($diag0 as $key) {
$sheet->setCellValue('A'.(string)($col + 1), '0');
$sheet->setCellValue('B'.(string)($col + 1), $key->cdDiag);
$sheet->setCellValue('D'.(string)($col + 1), $key->nmDiag);
for ($char='E'; $char <= 'J' ; $char++) {
$sheet->setCellValue($char.(string)($col + 1), '0');
}
$col++;
}
我会尝试 PHPExcel 缓存配置,但它仍然给出相同的结果。我认为由于 col 'E' 到 'DD' 具有相同的值,我可以让它像在一个循环中设置 'E' 到 'DD' 为 0 吗?
解决方案
您可以为一系列单元格设置格式:
$objPHPExcel->getActiveSheet() // THIS SHOULD BE THE SAME AS $sheet
->getStyle('E2:DD18000')
->getNumberFormat()
->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);
包含可用格式的列表:
http://apigen.juzna.cz/doc/ouardisoft/PHPExcel/class-PHPExcel_Style_NumberFormat.html
此外,也许这种插入行的方式效果更好:
$objPHPExcel->getActiveSheet()->fromArray(array(
0, //COL A
$key->cdDiag, //COL B
'',
$key->nmDiag,
0,0,0,0,0, ... 0,0,0,0 // your 26 COLUMNS E to DD,
),NULL,'A' . $row + 1);
您还可以将列设置为空字符串''
,因为您添加了 setColumnsFormat。而你的 $col 变量,并不重要,但它应该被称为 $row ......你正在通过行而不是 cols ......
我从未尝试过,但是:
您可以$objPHPExcel->garbageCollect();
在插入每一行后使用来解决内存分配问题,如果这不能解决问题,请尝试提供更多内存:
ini_set('memory_limit', '256M');
默认是128,只要确保你不要消耗太多资源......
推荐阅读
- javascript - CropBox 唯一编号作为订单参考 PHP
- javascript - Javascript 获取用户位置(国家、语言、时区)
- forms - 是的验证:需要语言的所有或没有字段
- python - 使用 Python 在两个 PN532 之间进行 NFC 点对点
- json - OPENJSON 从表中解析 3M 行很慢
- json - SQL Server Self Deadlock on SELECT INTO with temp table from OPENJSON
- elasticsearch - 如何获取 Elastic 中每次出现的文档数量?
- python - 即使定义了路线,示例瓶应用程序(Python)也会给出 404
- node.js - 两个 Git 存储库,一个 Docker 映像
- c# - 定义应在哪个节点索引上创建多个节点