Laravel xuất file excel sử dụng thư viện maatwebsite

Tram Ho

Hello anh em!
Nay mình sẽ giới thiều với mọi người thư viện maatwebsite để sử lý việc export file excel trong project laravel nào cũng bắt tay vào tạo project test thử nhé.

Cài đặt project laravel

Vào forder muốn đặt dự án và chạy lệnh dưới đây để tạo 1 prj laravel tên project là excel nhé. Nếu lỗi ‘Permission’ thì chạy bằng quyền sudo là được.
$ composer create-project --prefer-dist laravel/laravel excel
Sau đó tạo DB và chỉnh sửa file .env để kết nối DB nhé

Chạy lệnh để generate key
$ php artisan key:generate
Chạy migrate để tạo bảng user
$ php artisan migrate

Vậy là đã tạo xong project laravel, tiếp theo chúng ta tạo dữ liệu mẫu cho bảng user để tý nữa mình test export nhé.
Bước 1: Tạo 1 seeder mới cho bảng users có tên là UsersTableSeeder.php
$ php artisan make:seeder UsersTableSeeder
Bước 2: Giờ đây chúng ta đã có 1 file UsersTableSeeder.php trong thư mục database/seeds/ . trong function chúng ta sẽ thêm câu lệnh để chạy factory
factory(User::class, 100)->create();
và nhớ use model User vào nhé.
UsersTableSeeder.php hoàn chỉnh sẽ như sau:

Tiếp theo đăng ký seed UsersTableSeeder ở file DatabaseSeeder.php, file DatabaseSeeder.php, hoàn chỉnh sẽ như sau:

Xong rồi, giờ chúng ta chạy lệnh:
php artisan db:seed
vào db kiểm tra sẽ có 100 bản ghi mẫu trong bảng user rồi, giờ chúng ta bắt đầu test export nhé.

Cài đặt thư viên maatwebsite

chạy lệnh sau để cài đặt thư viện
composer require maatwebsite/excel
Chạy lệnh sau để pulish config
php artisan vendor:publish --provider="MaatwebsiteExcelExcelServiceProvider"

Export

  • Tạo route để khi gọi đến route này sẽ export ra file
    Route::get('export', '[email protected]')->name('export');
  • Tạo Controller
    php artisan make:controller ExportController
  • chạy câu lệnh bên dưới, mình tạo một file tên là UsersExport để sử lý việc export
    php artisan make:export UsersExport --model=User
  • Sau khi chạy câu lệnh bên trên, sẽ tạo cho ta file UsersExport.php trong AppExportsUserExport.php , Sửa file thành như sau

Giải thich file trên nhé

  • Mình use AppUser để sử dụng Eloquent trong Laravel,
  • Dùng class của MaatwebsiteExcel để sử dụng chức năng export
  • Hàm headings(): tạo các cột tiêu đề
  • Hàm Map($user): map những giá trị cần xuất ra với heading
  • Tiếp theo ta sẽ cài đặt ở file Controller để có thể sử dụng file UsersExport.php, use AppUsersExport đển UserController.php
  • Tiếp theo sửa controller

Vậy là xong rồi, truy câp vào đường dẫn đã tạo ở trên chúng ta sẽ xuất được ra 1 file users.xlsx rồi nhé, bạn có thể thay đổi định dạng file xuất thành users.csv hay tsv.
Cảm ơn mn đã quan tâm ?)!

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo