PHPExcel - 一次设置具有相同值的单元格
PHPExcel - Set cells with same value at one time
我正在尝试写入 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' 具有相同的值,我可以像 set '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...你正在移动 rows 而不是 cols...
我从来没有尝试过这个但是:
您可以在插入每一行后使用 $objPHPExcel->garbageCollect();
来解决您的内存分配问题,如果这不能解决问题,请尝试提供更多内存:
ini_set('memory_limit', '256M');
默认为 128,请确保不要消耗太多资源...
我正在尝试写入 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' 具有相同的值,我可以像 set '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...你正在移动 rows 而不是 cols...
我从来没有尝试过这个但是:
您可以在插入每一行后使用 $objPHPExcel->garbageCollect();
来解决您的内存分配问题,如果这不能解决问题,请尝试提供更多内存:
ini_set('memory_limit', '256M');
默认为 128,请确保不要消耗太多资源...