| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 | 
							- <?php
 
- namespace App\Exports;
 
- use Illuminate\Support\Collection;
 
- use Illuminate\Support\Facades\Redis;
 
- use Maatwebsite\Excel\Concerns\FromCollection;
 
- use Maatwebsite\Excel\Concerns\WithCustomValueBinder;
 
- use Maatwebsite\Excel\Concerns\WithEvents;     // 自动注册事件监听器
 
- use Maatwebsite\Excel\Concerns\WithHeadings;
 
- use Maatwebsite\Excel\Concerns\WithStrictNullComparison;    // 导出 0 原样显示,不为 null
 
- use Maatwebsite\Excel\Events\AfterSheet;
 
- use PhpOffice\PhpSpreadsheet\Cell\Cell;
 
- use PhpOffice\PhpSpreadsheet\Cell\DataType;
 
- use PhpOffice\PhpSpreadsheet\Cell\DefaultValueBinder;
 
- class ExportOrder extends DefaultValueBinder implements WithCustomValueBinder , FromCollection, WithEvents, WithStrictNullComparison,withHeadings
 
- {
 
-     /**
 
-      * @return \Illuminate\Support\Collection
 
-      */
 
-     public function __construct($data,$type=1,$headers)
 
-     {
 
-         $this->data = $data;
 
-         $this->type = $type;
 
-         $this->headers = $headers;
 
-     }
 
-     public function registerEvents(): array
 
-     {
 
-         //区分不通状态的合同导出,格式不同
 
-             $type = $this->type.'_set';
 
-             return $this->$type();
 
-     }
 
-     //数组转集合
 
-     public function collection()
 
-     {
 
-         return new Collection($this->createData());
 
-     }
 
-     //业务代码
 
-     public function createData()
 
-     {
 
-         $name = $this->type;
 
-         $data = $this->export();
 
-         return $data;
 
-     }
 
-     public function bindValue(Cell $cell, $value)
 
-     {
 
-         if (is_numeric($value)) {
 
-             $cell->setValueExplicit($value, DataType::TYPE_STRING2);
 
-             return true;
 
-         }
 
-         // else return default behavior
 
-         return parent::bindValue($cell, $value);
 
-     }
 
-     // 自定义表头,需实现withHeadings接口
 
-     public function headings(): array
 
-     {
 
-         return $this->headers;
 
-     }
 
-     private function export(){
 
-         $list = [];
 
- //        dump($this->data);die;
 
-         foreach ($this->data as $v){
 
-             $list[] = $v;
 
-         }
 
-         return $list;
 
-     }
 
-     private function default_set(){
 
-         return [
 
-             AfterSheet::class => function (AfterSheet $event) {
 
-                 $count = count($this->data);
 
-                 //设置区域单元格水平居中
 
-                 $event->sheet->getDelegate()->getStyle('A1:'.'M'.($count+1))->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);
 
-                 // 定义列宽度
 
-                 $widths = ['A' => 20, 'B' => 20, 'C' => 20, 'D' => 20, 'E' => 20, 'F' => 20, 'G' => 20, 'H' => 20, 'I' => 20, 'J' => 20, 'K' => 20, 'L' => 20, 'M' => 20, 'O' => 20, 'P' => 20, 'Q' => 20, 'R' => 20, 'S' => 20, 'T' => 20, 'U' => 20, 'V' => 20, 'W' => 20, 'X' => 20, 'Y' => 20, 'Z' => 20];
 
-                 foreach ($widths as $k => $v) {
 
-                     // 设置列宽度
 
-                     $event->sheet->getDelegate()->getColumnDimension($k)->setWidth($v);
 
-                 }
 
-             },
 
-         ];
 
-     }
 
-     private function salary_set(){
 
-         return [
 
-             AfterSheet::class => function (AfterSheet $event) {
 
-                 $count = count($this->data);
 
-                 //设置区域单元格水平居中
 
-                 $event->sheet->getDelegate()->getStyle('A1:'.'M'.($count+1))->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);
 
-                 // 定义列宽度
 
-                 $widths = ['A' => 20, 'B' => 20, 'C' => 20, 'D' => 20, 'E' => 20, 'F' => 35, 'G' => 25, 'H' => 25, 'I' => 25, 'J' => 25, 'K' => 25, 'L' => 25, 'M' => 25];
 
-                 foreach ($widths as $k => $v) {
 
-                     // 设置列宽度
 
-                     $event->sheet->getDelegate()->getColumnDimension($k)->setWidth($v);
 
-                 }
 
-             },
 
-         ];
 
-     }
 
- }
 
 
  |