這篇來試做簡易匯入 Excel 檔案

由於前一篇試做匯出時,有些需要從 laravel-excel 安裝的指令已經輸入過了,此處緊接著輸入:php artisan make:import ArticlesImport — model=Article

在 App\Imports\ArticlesImport.php 編寫需要的內容:

  1. 加上 use App\Models\Article; 刪除 use App\Article;
  2. 加上 use Maatwebsite\Excel\Concerns\WithHeadingRow;
  3. 在 implements 後面加上 ,WithHeadingRow
  4. 在 return new Article 的陣列內,寫出 Excel內的"欄位名稱"
  5. 要匯入的 Excel 的第一列要寫上"欄位名稱"

Excel 的第一列要加上"欄位名稱"

接下來,要到 App\Models\Article.php 加入允許大量寫入的欄位,加在 $fillable 內

加入允許大量寫入的欄位

然後,我們加一個從首頁"文章列表"的 <a> 連過去匯入檔案的畫面

畫面呈現
加一個從首頁”文章列表”的 <a>

未套入 Bootstrap 前

匯入檔案的 view ,套入 Bootstrap 之後

此處從 https://getbootstrap.com/ 加了可以套用樣式的 CDN

CSS
JS

將 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 決定的

--

--

No responses yet