下面由laravel教程欄目給大家介紹關于laravel-excel3.1最基礎用法,希望對大家有所幫助!
-
官網:https://docs.laravel-excel.com
路由定義為GET
Route::get('/export', [OrderController::class, 'export']);
控制器轉發
public function export(Request $request): BinaryFileResponse{ return Excel::download(new OrderExport($request->get('status', -1)), 'order.xlsx');}
業務代碼
<?php namespace AppExports; use AppModelsOrder; use IlluminateSupportCollection; use MaatwebsiteExcelConcernsFromCollection; use MaatwebsiteExcelConcernsWithColumnFormatting; use MaatwebsiteExcelConcernsWithHeadings; use MaatwebsiteExcelConcernsWithMapping; use PhpOfficePhpSpreadsheetSharedDate; use PhpOfficePhpSpreadsheetStyleNumberFormat; /** * 派單導出 */ class OrderExport implements FromCollection, WithHeadings, WithColumnFormatting, WithMapping { public $status; //接受參數 public function __construct(int $status) { $this->status?=?$status; ????} ????/** ?????*?數據源 ?????*?@return?Collection ?????*/ ????public?function?collection():?Collection ????{ ????????$query?=?Order::query(); ????????if?($this->status?!=?-1)?{ ????????????$query->where('status',?$this->status); ????????} ????????return?$query->get(); ????} ????/** ?????*?自定義表頭 ?????*?@return?string[] ?????*/ ????public?function?headings():?array ????{ ????????return?[ ????????????'編號', ????????????'創建人', ????????????'中隊長', ????????????'人員', ????????????'名稱', ????????????'備注', ????????????'狀態', ????????????'創建時間', ????????????'更新時間' ????????]; ????} ????/** ?????*?設置單元格時間格式 ?????*?@return?array ?????*/ ????public?function?columnFormats():?array ????{ ????????return?[ ????????????'H'?=>?NumberFormat::FORMAT_DATE_YYYYMMDD, ????????????'I'?=>?NumberFormat::FORMAT_DATE_YYYYMMDD, ????????]; ????} ????/** ?????*?自定義數據列 ?????*?@param?mixed?$row ?????*?@return?array ?????*/ ????public?function?map($row):?array ????{ ????????return?[ ????????????$row->id, ????????????$row->founder->name????'無', ????????????$row->squadron->name????'無', ????????????$row->player->name????'無', ????????????$row->name, ????????????$row->remark??:?'無', ????????????$this->statusMap($row->status), ????????????Date::dateTimeToExcel($row->created_at), ????????????Date::dateTimeToExcel($row->updated_at), ????????]; ????} ????/** ?????*?狀態轉化 ?????*?@param?$status ?????*?@return?string ?????*/ ????public?function?statusMap($status):?string ????{ ????????switch?($status)?{ ????????????case?0: ????????????????$statusText?=?'待處理'; ????????????????break; ????????????case?1: ????????????????$statusText?=?'處理中'; ????????????????break; ????????????case?2: ????????????????$statusText?=?'待審核'; ????????????????break; ????????????case?3: ????????????????$statusText?=?'已完成'; ????????????????break; ????????????default: ????????????????$statusText?=?'未知'; ????????} ????????return?$statusText; ????} }
相關推薦:最新的五個Laravel視頻教程??? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END