123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- <?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;
- }
- /**
- * 导出数据的处理
- * @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;
- }
- }
|