laravel 导出
常规导出xlsx 更多的是导出小数据 需要大数据导出的时候 需要临时更改内存大小 ini_set('memory_limit', '1024M'); 不更改内存的情况 可以选择队列导出到服务器后另行下载;
导出csv 由于一般浏览器都是默认解析输出模式 所以一般加header头
这里说两种:
1/
use Illuminate\Support\Facades\Response; $data = [1,2,3,4]; $headers = array( "Access-Control-Expose-Headers" => "Content-Disposition" ); $filename = storage_path('attend_member_list.csv'); $output = fopen($filename, 'w+');foreach ($data as $line) { fputcsv($output, $line); }
return Response::download($filename, '参与列表.csv', $headers); 2/ use Maatwebsite\Excel\Facades\Excel; $header = []; $excelData =[]; $headers = array( "Access-Control-Expose-Headers" => "Content-Disposition" ); return Excel::download((new ExcelExport($excelData->toArray(), $header)), '参与列表.csv', null, $headers); new ExcelExport 是创建导出类库 <?php
namespace App\Exports;
use Maatwebsite\Excel\Concerns\FromCollection; use Maatwebsite\Excel\Concerns\Exportable; use Maatwebsite\Excel\Concerns\WithHeadings; class ExcelExport implements FromCollection, WithHeadings { use Exportable;
private $data; private $headings;
//数据注入 public function __construct($data, $headings) { $this->data = $data; $this->headings = $headings; }
//实现FromCollection接口 public function collection() { return collect($this->data); }
//实现WithHeadings接口 public function headings(): array { return $this->headings; } }