123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- <?php
- namespace 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');
- },
- ];
- }
- }
|