Hướng dẫn simple excel laravel - Laravel excel đơn giản

Chào tất cả mọi người nha, vậy là mình đã trở lại đầy nguy hiểm sau khoảng thời gian ăn tết hơi dài rồi ạ. Và để tiếp tục câu chuyện của ngày hôm nay thì mình sẽ chia sẻ với các bạn về một package cực kỳ hữu ích trong việc export cũng như import file trong framework laravel - Laravel Excel. Và để không mất thời gian của các bạn mình sẽ phi vào câu chuyện ngay bây giờ
Và để tiếp tục câu chuyện của ngày hôm nay thì mình sẽ chia sẻ với các bạn về một package cực kỳ hữu ích trong việc export cũng như import file trong framework laravel - Laravel Excel.
Và để không mất thời gian của các bạn mình sẽ phi vào câu chuyện ngay bây giờ

Hướng dẫn simple excel laravel - Laravel excel đơn giản

Giới thiệu

Laravel Excel là một trình bao bọc đơn giản nhưng thanh lịch xung quanh PhpSpreadsheet với mục tiêu đơn giản hóa việc export cũng như import file. Và đây là PhpSpreadsheet cho những bạn đang thắc mắc và tự hỏi về nó PhpSpreadsheet là một thư viện được viết bằng PHP thuần túy và cung cấp một tập hợp các lớp cho phép bạn đọc và ghi vào các định dạng tệp bảng tính khác nhau, như Excel và LibreOffice Calc.
Và đây là PhpSpreadsheet cho những bạn đang thắc mắc và tự hỏi về nó

Hướng dẫn simple excel laravel - Laravel excel đơn giản

PhpSpreadsheet là một thư viện được viết bằng PHP thuần túy và cung cấp một tập hợp các lớp cho phép bạn đọc và ghi vào các định dạng tệp bảng tính khác nhau, như Excel và LibreOffice Calc.

Các chức năng của Laravel Excel

  • Dễ dàng xuất các bộ sưu tập sang Excel.
  • Xuất truy vấn với chunking tự động cho hiệu suất tốt hơn.
  • Xuất khẩu hàng đợi cho hiệu suất tốt hơn.
  • Dễ dàng xuất các chế độ xem Blade sang Excel.
  • Dễ dàng nhập vào bộ sưu tập.
  • Đọc tệp Excel trong khối.
  • Xử lý các chèn nhập theo từng batch.

Cài đặt

Để cài đặt Laravel Excel thì các bạn cần phải có các yêu cầu sau:

  • PHP: 7.0
  • Laravel:
    // Ở mục providers thêm dòng này.
    'providers' => [
        /*
         * Package Service Providers...
         */
        Maatwebsite\Excel\ExcelServiceProvider::class,
    ]
       // Ở mục aliases thêm dòng này.
        'aliases' => [
        ...
        'Excel' => Maatwebsite\Excel\Facades\Excel::class,
     ]
    
    0
  • PhpSpreadsheet:
    // Ở mục providers thêm dòng này.
    'providers' => [
        /*
         * Package Service Providers...
         */
        Maatwebsite\Excel\ExcelServiceProvider::class,
    ]
       // Ở mục aliases thêm dòng này.
        'aliases' => [
        ...
        'Excel' => Maatwebsite\Excel\Facades\Excel::class,
     ]
    
    1
  • Các PHP extension là
    // Ở mục providers thêm dòng này.
    'providers' => [
        /*
         * Package Service Providers...
         */
        Maatwebsite\Excel\ExcelServiceProvider::class,
    ]
       // Ở mục aliases thêm dòng này.
        'aliases' => [
        ...
        'Excel' => Maatwebsite\Excel\Facades\Excel::class,
     ]
    
    2 đã được enabled

Sau khi đã có đủ các yêu cầu trên thì cá bạn cần cài đặt package này vào file composer.json của laravel project bằng cách mở terminal lên và chưởng câu này vào.

composer require maatwebsite/excel

Lúc này

// Ở mục providers thêm dòng này.
'providers' => [
    /*
     * Package Service Providers...
     */
    Maatwebsite\Excel\ExcelServiceProvider::class,
]
   // Ở mục aliases thêm dòng này.
    'aliases' => [
    ...
    'Excel' => Maatwebsite\Excel\Facades\Excel::class,
 ]
3 sẽ tự động được đăng ký cho bạn. Tuy nhiên, nếu bạn muốn tự đăng ký thì có thể thêm đoạn này vào file
// Ở mục providers thêm dòng này.
'providers' => [
    /*
     * Package Service Providers...
     */
    Maatwebsite\Excel\ExcelServiceProvider::class,
]
   // Ở mục aliases thêm dòng này.
    'aliases' => [
    ...
    'Excel' => Maatwebsite\Excel\Facades\Excel::class,
 ]
4

// Ở mục providers thêm dòng này.
'providers' => [
    /*
     * Package Service Providers...
     */
    Maatwebsite\Excel\ExcelServiceProvider::class,
]
   // Ở mục aliases thêm dòng này.
    'aliases' => [
    ...
    'Excel' => Maatwebsite\Excel\Facades\Excel::class,
 ]

Sử dụng

Export

Đầu tiên bạn cần tạo một export class trong thư mục

// Ở mục providers thêm dòng này.
'providers' => [
    /*
     * Package Service Providers...
     */
    Maatwebsite\Excel\ExcelServiceProvider::class,
]
   // Ở mục aliases thêm dòng này.
    'aliases' => [
    ...
    'Excel' => Maatwebsite\Excel\Facades\Excel::class,
 ]
5. Hoặc có thể sử dụng command sau để tạo tự động:

php artisan make:export ExportName --model=ModelExportName

Lúc này trong thư mục

// Ở mục providers thêm dòng này.
'providers' => [
    /*
     * Package Service Providers...
     */
    Maatwebsite\Excel\ExcelServiceProvider::class,
]
   // Ở mục aliases thêm dòng này.
    'aliases' => [
    ...
    'Excel' => Maatwebsite\Excel\Facades\Excel::class,
 ]
6 sẽ có file của bạn vừa tạo ra. Cụ thể ở đây mình chạy lệnh
// Ở mục providers thêm dòng này.
'providers' => [
    /*
     * Package Service Providers...
     */
    Maatwebsite\Excel\ExcelServiceProvider::class,
]
   // Ở mục aliases thêm dòng này.
    'aliases' => [
    ...
    'Excel' => Maatwebsite\Excel\Facades\Excel::class,
 ]
7 nên sẽ có cấu trúc thư mục như thế này.

├── app
│   ├── Exports
│   │   ├── UsersExport.php
│ 
└── composer.json

Lúc này file

// Ở mục providers thêm dòng này.
'providers' => [
    /*
     * Package Service Providers...
     */
    Maatwebsite\Excel\ExcelServiceProvider::class,
]
   // Ở mục aliases thêm dòng này.
    'aliases' => [
    ...
    'Excel' => Maatwebsite\Excel\Facades\Excel::class,
 ]
8 của bạn sẽ như sau.



namespace App\Exports;

use App\User;
use Maatwebsite\Excel\Concerns\FromCollection;

class UsersExport implements FromCollection
{
    public function collection()
    {
        return User::all();
    }
}

Bây giờ, bạn chỉ việc gọi class export đã tạo ở trên

// Ở mục providers thêm dòng này.
'providers' => [
    /*
     * Package Service Providers...
     */
    Maatwebsite\Excel\ExcelServiceProvider::class,
]
   // Ở mục aliases thêm dòng này.
    'aliases' => [
    ...
    'Excel' => Maatwebsite\Excel\Facades\Excel::class,
 ]
9 để export model User của bạn ra file users.xlsx. Cuối cùng là thêm một đường dẫn để truy cập khi cần export nữa là tuyệt vời. Các bạn có thể tham khảo ở ví dụ bên dưới nhé.
Cuối cùng là thêm một đường dẫn để truy cập khi cần export nữa là tuyệt vời. Các bạn có thể tham khảo ở ví dụ bên dưới nhé.

// UserController
use App\Exports\UsersExport;
use Maatwebsite\Excel\Facades\Excel;
use App\Http\Controllers\Controller;

class UsersController extends Controller 
{
    public function export() 
    {
        return Excel::download(new UsersExport, 'users.xlsx');
    }
}
// Route
Route::get('users/export/', 'UsersController@export');

Sau khi làm xong những việc trên thì các bạn chỉ cần chạy command

php artisan make:export ExportName --model=ModelExportName
0 rồi vào đường dẫn
php artisan make:export ExportName --model=ModelExportName
1 để xem và cảm nhận
Hướng dẫn simple excel laravel - Laravel excel đơn giản

Import

Tương tự như lúc export, để có thể import được thì các bạn cũng cần phải tạo một import class trong thư mục

php artisan make:export ExportName --model=ModelExportName
2, còn việc tạo bằng sức cơm hay thông qua command
php artisan make:export ExportName --model=ModelExportName
3 thì mọi người tự quyết định nha. Sau khi tạo xong thì cấu trúc thư mục của bạn sẽ như vậy.
Sau khi tạo xong thì cấu trúc thư mục của bạn sẽ như vậy.

├── app
│   ├── Imports
│   │   ├── UsersImport.php
│ 
└── composer.json

Bây giờ hãy mở file

php artisan make:export ExportName --model=ModelExportName
4 vừa tạo ở trên ra và thêm đoạn code phía dưới vào để thực hiện việc tạo User mới với mỗi row data mà chúng ta đã import được.



namespace App\Imports;

use App\User;
use Illuminate\Support\Facades\Hash;
use Maatwebsite\Excel\Concerns\ToModel;

class UsersImport implements ToModel
{
    /**
     * @param array $row
     *
     * @return User|null
     */
    public function model(array $row)
    {
        return new User([
           'name'     => $row[0],
           'email'    => $row[1], 
           'password' => Hash::make($row[2]),
        ]);
    }
}

Cuối cùng là đưa vào controller để thực hiện việc import

Hướng dẫn simple excel laravel - Laravel excel đơn giản

use App\Imports\UsersImport;
use Maatwebsite\Excel\Facades\Excel;
use App\Http\Controllers\Controller;

class UsersController extends Controller 
{
    public function import() 
    {
        Excel::import(new UsersImport, 'users.xlsx');
        
        return redirect('/')->with('success', 'All good!');
    }
}

Tổng kết

Trên đây là những điều cơ bản cần nắm để có thể export cũng như import file một cách i zì trong laravel. Ngoài ra còn có rất nhiều chức năng hữu ích như export/import multiple sheet, export/import sử dụng queue, ... mà thời gian cũng như trình english có hạn nên mình vẫn chưa thể tìm hiểu sâu hơn được. Mọi người có thể truy cập vào trang document của package tại đây để tìm hiểu thêm ạ. Cảm ơn vì đã đọc hết bài mà không có ném gạch
Mọi người có thể truy cập vào trang document của package tại đây để tìm hiểu thêm ạ.
Cảm ơn vì đã đọc hết bài mà không có ném gạch

Hướng dẫn simple excel laravel - Laravel excel đơn giản
Hướng dẫn simple excel laravel - Laravel excel đơn giản