| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | <?phpnamespace App\Exports;use Illuminate\Support\Collection;use Illuminate\Support\Facades\Redis;use Maatwebsite\Excel\Concerns\FromCollection;use Maatwebsite\Excel\Concerns\WithEvents;     // 自动注册事件监听器use Maatwebsite\Excel\Concerns\WithStrictNullComparison;    // 导出 0 原样显示,不为 nulluse Maatwebsite\Excel\Events\AfterSheet;class CommonExport implements FromCollection, WithEvents, WithStrictNullComparison{    public $data;    /**     * @return \Illuminate\Support\Collection     */    public function __construct($data)    {        $this->data = $data;    }    /**     * 导出数据的处理     * @return array     */    public function registerEvents(): array    {        //这边处理数据格式        //关于表单的合并        $params = $this->data['params'];        $style = [            AfterSheet::class => function (AfterSheet $event) use($params) {                $count = count($this->data);                //设置区域单元格水平居中                $event->sheet->getDelegate()->getStyle('A1:'.'BZ'.($count+1))->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);                //合并相关                $merge = $params['merge'];                $event->sheet->getDelegate()->setMergeCells($merge);            },        ];        return $style;    }    //数组转集合    public function collection()    {        return new Collection($this->createData());    }    //业务代码    public function createData()    {        $data = $this->export();        return $data;    }    private function export(){//        var_dump($this->data);die;        $data = $this->data['data'];        $list = [];        foreach ($data as $v){            $list[] = $v;        }        return $list;    }}
 |