我制作了一个脚本,我收到以下错误。如果将内存大小升级到7g仍然是错误。所以我试图附加10000条记录并保存,然后去下一万条来解决它,有效,但仍然出错。
有没有办法刷新工作簿或其他方法?
日Thnx!
the awnser:
PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
$cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_to_discISAM;
$cacheSettings = array(
'dir' => '/home/domains/xxxx.nl/public_html/xxxxx'
);
require_once 'PHPExcel.php';
require_once 'PHPExcel/Writer/Excel2007.php';
require_once 'PHPExcel/IOFactory.php';
$counter = $result->num_rows;//159920
$spreadsheet = new PHPExcel();
$spreadsheet->setActiveSheetIndex(0);
$worksheet = $spreadsheet->getActiveSheet();
//header
$worksheet->setCellValueExplicit('A' . 1, 'Filename', PHPExcel_Cell_DataType::TYPE_STRING);
etc
etc
$rownr = 2;
$counterN = 0;
while ($row = mysqli_fetch_assoc($result)) {
$worksheet->setCellValueExplicit('A' . $rownr, utf8_encode($row['filename']), PHPExcel_Cell_DataType::TYPE_STRING);
etc
etc
if( $counterN == 10000 ){
$objWriter = new PHPExcel_Writer_Excel2007($spreadsheet);
$objWriter->save('test.xlsx');
$objPHPExcel = PHPExcel_IOFactory::load("test.xlsx");
$objPHPExcel->setActiveSheetIndex(0);
$row = $objPHPExcel->getActiveSheet()->getHighestRow()+1;
$counterN = 0;
}
$counterN++;
}
$objWriter = new PHPExcel_Writer_Excel2007($spreadsheet);
$objWriter->save('test.xlsx');
答案 0 :(得分:1)
如果没有足够的内存来处理大量单元格,那么推荐的减少内存使用量的方法是使用单元格缓存,如4.2.1.
中所述开发人员文档。