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;
    }
}
让每一滴智慧绘制成一条不归路!
原文地址:https://www.cnblogs.com/JdsyJ/p/15747590.html