| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | <?phpnamespace App\Exports;use App\Models\Student;use Illuminate\Support\Facades\Log;use Maatwebsite\Excel\Concerns\FromCollection;use Maatwebsite\Excel\Concerns\WithHeadings;use Maatwebsite\Excel\Concerns\WithEvents;use Maatwebsite\Excel\Events\AfterSheet;class StudentsExport implements FromCollection, WithHeadings, WithEvents{    public $columns = 7;    public function collection()    {        $students = Student::orderBy('created_at', 'desc')->get();        $items = collect();        foreach($students as $item) {            $tmp = $item->getCourseInfo();            $item = collect([                'name' => $item->name,                'phone' => $item->phone,                'course_name' => $tmp['course_name'],                'apply_date' => $tmp['apply_date'],                'end_date' => $tmp['end_date'],                'teacher_names' => $tmp['teacher_names'],                'remark' => $item->remark,            ]);            $items->push($item);        }        return $items;    }    public function headings(): array    {        return [            '姓名',            '手机号',            '课程名称',            '报名日期',            '截止日期',            '任课老师',            '备注',        ];    }    public function registerEvents(): array    {        return [            AfterSheet::class => function(AfterSheet $event) {                $sheet = $event->sheet->getDelegate();                for($i = 0; $i <= $this->columns; ++$i) {                    $sheet->getColumnDimensionByColumn($i)->setWidth(14);                }                $items = $sheet->getHighestRowAndColumn();                $sheet->getStyle('A1:' . $items['column'] . $items['row'])->getAlignment()->setHorizontal('center');            },        ];    }}
 |