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 的文件,代碼如下:
Name | Gender | |
---|---|---|
{{ $user[‘name’] }} | {{ $user[’email’] }} | {{ $user[‘gender’] }} |
這個模板將會把用戶數據填充到一個 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 中實現數據的導入和導出。