laravel如何做導入導出excel

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 的文件,代碼如下:


@foreach($users as $user)

@endforeach

Name Email 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 中實現數據的導入和導出。

? 版權聲明
THE END
喜歡就支持一下吧
點贊15 分享