1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- <?php
- namespace 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 原样显示,不为 null
- use Maatwebsite\Excel\Events\AfterSheet;
- class CommonExport implements FromCollection, WithEvents, WithStrictNullComparison
- {
- public $data;
- /**
- * @return \Illuminate\Support\Collection
- */
- public function __construct($data)
- {
- $this->data = $data;
- }
- public function registerEvents(): array
- {
- //这边处理数据格式
- //关于表单的合并
- $params = $this->data['params'];
- $style = [
- AfterSheet::class => function (AfterSheet $event) use($params) {
- $count = count($this->data['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;
- }
- }
|