赞
踩
- laravel 5.8.40
- Linux
1. 使用 后台队列监听模式,导出订单数据
2. 每次导出的数据量,要求不能超过 5000 (因为订单数据关联多表,处理逻辑较复杂)
3. 减少 join 的连接使用
4. 每次导出一页的数据,每页1000条
5. 定时监听,当前导出任务是否完成,如果没有完成会继续导出下一页的数据
6. 初次导出,会生成 xlsx文件,第二页开始进行数据的拼接
7. 后台 列表显示每次导出的完成情况,只有全部数据导出,才可下载,如果有异常报错,可备注记录
前期准备
composer require maatwebsite/excel
php artisan make:export CommonExport
代码处理
/** * @notes:拼接excel 数据 * @param $title * @param $cellData * @param int $curr_page * @param string $sheetName * @param string $ext * @return string * @author: zhanghj * @Time: 2024/5/29 13:57 */ public function appendExcel($title, $cellData,$curr_page = 0, $ext = 'xlsx',$sheetName = 'sheet1'){ // 如果文件不存在,则创建文件,否则追加数据 $filePath = storage_path("app/public/exports/{$title}.{$ext}"); if (file_exists($filePath)) { // var_dump($title.'-数据追加 ...Page:'.$curr_page); //进行数据追加 Excel::load($filePath,function ($excel) use ($cellData, $sheetName) { $excel->sheet($sheetName, function ($sheet) use ($cellData) { foreach ($cellData as $cd){ $sheet->appendRow($cd); } }); })->store($ext); } else { Excel::create($title, function ($excel) use ($cellData, $sheetName) { $excel->sheet($sheetName, function ($sheet) use ($cellData) { $sheet->rows($cellData); }); })->store($ext); // 文件默认保存到storage/exports目录下 } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。