getActiveSheet(); $sheet->setTitle('Округа'); // Заголовки $sheet->setCellValue('A1', 'ID'); $sheet->setCellValue('B1', 'Сокращение'); $sheet->setCellValue('C1', 'Название'); // Стиль заголовков $sheet->getStyle('A1:C1')->getFont()->setBold(true); $sheet->getStyle('A1:C1')->getFill() ->setFillType(Fill::FILL_SOLID) ->getStartColor()->setARGB('DDDDDD'); // Данные $districts = District::orderBy('id')->get(); $i = 2; foreach ($districts as $district) { $sheet->setCellValue('A' . $i, $district->id); $sheet->setCellValue('B' . $i, $district->shortname); $sheet->setCellValue('C' . $i, $district->name); $i++; } // Границы if ($i > 2) { $sheet->getStyle('A1:C' . ($i - 1)) ->getBorders() ->getAllBorders() ->setBorderStyle(Border::BORDER_THIN) ->setColor(new Color('777777')); } // Автоширина колонок foreach (range('A', 'C') as $col) { $sheet->getColumnDimension($col)->setAutoSize(true); } // Сохранение $fileName = 'export_districts_' . date('Y-m-d_H-i-s') . '.xlsx'; $writer = new Xlsx($spreadsheet); $fd = 'export/districts'; Storage::disk('public')->makeDirectory($fd); $fp = storage_path('app/public/' . $fd . '/') . $fileName; Storage::disk('public')->delete($fd . '/' . $fileName); $writer->save($fp); $link = url('/storage/' . $fd . '/' . $fileName); // Создаём запись в таблице files File::query()->create([ 'link' => $link, 'path' => $fp, 'user_id' => $userId, 'original_name' => $fileName, 'mime_type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', ]); return $link; } }