這篇來試做簡易匯入 Excel 檔案
由於前一篇試做匯出時,有些需要從 laravel-excel 安裝的指令已經輸入過了,此處緊接著輸入:php artisan make:import ArticlesImport — model=Article
在 App\Imports\ArticlesImport.php 編寫需要的內容:
- 加上 use App\Models\Article; 刪除 use App\Article;
- 加上 use Maatwebsite\Excel\Concerns\WithHeadingRow;
- 在 implements 後面加上 ,WithHeadingRow
- 在 return new Article 的陣列內,寫出 Excel內的"欄位名稱"
- 要匯入的 Excel 的第一列要寫上"欄位名稱"
Excel 的第一列要加上"欄位名稱"
接下來,要到 App\Models\Article.php 加入允許大量寫入的欄位,加在 $fillable 內
然後,我們加一個從首頁"文章列表"的 <a> 連過去匯入檔案的畫面
未套入 Bootstrap 前
匯入檔案的 view ,套入 Bootstrap 之後
此處從 https://getbootstrap.com/ 加了可以套用樣式的 CDN
將 CDN 放至此處
加入一些樣式,並且用 <form> 包住匯入檔案用的 <input> 跟 <button>
至 web.php 加入 route
Route::get('/import-form', [ExcelController::class,'importForm']); // 匯入檔案的畫面,用 get()
Route::post('/import',[ExcelController::class,'import']); // 上傳檔案使用 post()
編寫呈現"匯入檔案"的 view importForm() 以及 上傳時要接收/上傳資料的 import()
記得要上方要加上 use App\Imports\ArticlesImport;
試著匯入檔案吧
在首頁點"匯入文章"→到了 http://localhost:8000/import-form 選擇要匯入的 Excel 檔案後(記得格式要注意,且要加上"欄位名稱")
按下"確定匯入後,會透過 <form> 送出,很短的瞬間,在 http://localhost:8000/import 做完處理後,導回首頁,並且顯示匯入成功
文章匯入成功會跳回首頁顯示出成功字樣,這裡的文章由誰分享,是匯入的 Excel 中,user_id 決定的