使用此代码,我可以导出到excel MyModel的数据,工作正常:
Excel::create('Filename', function ($excel) {
$excel->sheet('Contratos', function ($sheet) {
$datos = MyModel::select([
'id', 'data'])
->get();
$sheet->fromArray($datos, null, 'A1', false, false);
});
})->export('xls');
但我需要将数据块化以生成excel,因为在另一个模型中我有太多数据(如9000条记录)。我看到了一些像这样的例子:
http://www.thecreativeroad.com/blog/export-large-dataset-using-laravel-excel-using-laravel-db-chunk
$data = $user->query();
try{
return Excel::create('FileName', function($excel) use($data){
$data->chunk(100, function ($users) use($excel) {
$collection = $this->transformCollection($users);
$excel->sheet('OrgSubUserList', function($sheet) use($collection){
$sheet->fromModel($collection, null, 'A1', true);
});
});
})->export('xls');
}
catch(Exception $e)
{
return false;
}
但是我无法想象如何将它应用到我的代码中,我在工作表上的顺序与文件本身之间存在混淆。任何提示?
答案 0 :(得分:0)
将false作为第三个参数传递给chunk()以禁用排队
$data = [];
Excel::filter('chunk')->load($path)->chunk(1000, function ($results) use (&$data) {
foreach ($results as $row) {
$data[] = $row;
}
}, $shouldQueue = false);
return $data;