Laravel 是一款常用的 PHP 開發框架,它具有快速開發、易於維護等功能。在實際開發中,常常牽涉到資料的匯入和匯出,更具體一些,就是 Excel 檔案的匯入和匯出。 Laravel 如何實現資料的匯入和匯出呢?本文將介紹如何透過 Laravel 實現 Excel 檔案的匯入和匯出。
一、安裝 Laravel Excel
Laravel Excel 是針對 PHPExcel 的封裝,它可以輕鬆實現 Excel 檔案的匯入和匯出。因此,在實作匯入和匯出之前,我們需要先安裝 Laravel Excel。
透過Composer 進行安裝,執行以下命令:
composer require maatwebsite/excel
安裝完成後,需要在config/app.php
中加入以下內容:
'providers' => [ // ... MaatwebsiteExcelExcelServiceProvider::class, ], 'aliases' => [ // ... 'Excel' => MaatwebsiteExcelFacadesExcel::class, ]
二、Excel 檔案匯出
首先,我們來看如何匯出Excel 檔案。 Laravel Excel 提供了一種類似於定義資料庫資料模型的方式來定義 Excel 檔案的匯出。我們可以透過一個 Excel 範本來定義匯出的 Excel 檔案內容,然後將資料填入範本中。以下是具體的實作方法:
1.定義Excel 檔案範本
在專案的根目錄下執行以下指令:
php artisan make:export UsersExport --model=User
該指令將在app/Exports 目錄下產生一個名為UsersExport 的類別。此類實作了 FromModel 接口,用於將資料從模型中匯出到 Excel 檔案。
2.填入資料
定義 Excel 檔案範本後,我們需要透過程式碼向其中填入資料。程式碼實作如下:
namespace AppHttpControllers; use AppExportsUsersExport; use AppHttpControllersController; use MaatwebsiteExcelFacadesExcel; class UsersController extends Controller { public function export() { return Excel::download(new UsersExport, 'users.xlsx'); } }
3.產生 Excel 檔案
在完成資料填入後,就可以產生 Excel 檔案了。執行匯出操作,程式碼實作如下:
Excel::download(new UsersExport, 'users.xlsx');
以上程式碼將會產生一個名為 users.xlsx 的 Excel 檔案。
三、Excel 檔案匯入
匯入 Excel 檔案與匯出 Excel 檔案類似,同樣需要有資料模型,用於將 Excel 檔案中的資料匯入到資料庫中。以下是具體的實作方法:
1.定義Excel 檔案範本
首先,需要定義一個ContractsFromView 介面來實現資料填充,程式碼實作如下:
namespace AppImports; use IlluminateContractsViewView; use MaatwebsiteExcelConcernsFromView; class UsersImport implements FromView { private $users; public function __construct(array $users) { $this->users = $users; } public function view(): View { return view('exports.users', [ 'users' => $this->users ]); } }
在實現介面之後,需要在resources/views/exports 目錄下定義一個名為users.blade.php 的文件,程式碼如下:
<table> <thead> <tr> <th>Name</th> <th>Email</th> <th>Gender</th> </tr> </thead> <tbody> @foreach($users as $user) <tr> <td>{{ $user['name'] }}</td> <td>{{ $user['email'] }}</td> <td>{{ $user['gender'] }}</td> </tr> @endforeach </tbody> </table>
這個範本將會把使用者資料填入一個HTML 表格中。
2.導入Excel 檔案
在定義資料模型之後,就可以透過Laravel Excel 的Excel::import
函數將資料匯入到資料庫中了,具體程式碼如下:
namespace AppHttpControllers; use AppImportsUsersImport; use MaatwebsiteExcelFacadesExcel; class UsersController extends Controller { public function import() { $file = request()->file('file'); $users = Excel::toArray(new UsersImport, $file); // 可以在此处将 $users 插入数据库 } }
在上述程式碼中,我們首先透過輸入框選擇Excel 文件,然後取得Excel 文件,將其轉換為陣列類型。對於導入的數據,我們可以在 // 可以在此處將 $users 插入資料庫
處將其插入到資料庫中。
四、總結
Laravel Excel 已經為我們提供了類似於資料庫操作的方式,讓 Excel 檔案匯入和匯出變得非常簡單。 Laravel Excel 可以與 Eloquent 模型無縫協作,同時也支援其他格式的文件,例如 CSV、PDF 和 HTML。我們只需要按照上述方法安裝 Laravel Excel 並定義合適的模型即可在 Laravel 中實現資料的匯入和匯出。
以上是laravel如何做導入匯出excel的詳細內容。更多資訊請關注PHP中文網其他相關文章!