[Laravel] Export CSV với LaraCSV
Export CSV với Laravel chưa bao giờ đơn giản đến thế. Dựa vào nhu cầu thống kế của từng dự án khác nhau củng như các hệ thống được xây dựng bằng Laravel. Hôm nay mình sẽ hướng dẫn các bạn thực hiện Export CSV với LaraCSV.
Đầu tiên chúng ta cần 1 project Laravel bất kỳ. Việc cài đặt chắc mình sẽ không nói về nó phải không nào. Để tránh mất quá nhiều thời gian mình chỉ đề cập đến vấn đề install package và các bước thực hiện.
1. Cài Đặt LaraCSV
Đễ cài đặt LaraCSV các bạn có thể dùng composer chạy lệnh sau:
composer
require
"usmanhalalit/laracsv:1.*@dev"
2. Hướng dẩn sử dụng
Việc cài đặt sẽ mất vài phút. Các bạn hãy chờ khi hoàn tất nhé.! Sau khi cài đặt xong việc cuối cùng là dùng thôi. Để dùng LaraCSV các bạn chỉ cần khai báo như sau:
namespace App\Http\Controllers;
use use Laracsv\Export as ExportCsv;
class YourController extends Controller
namespace App\Http\Controllers;
use use Laracsv\Export as ExportCsv;
class YourController extends Controller
{
protected $csv;
function __construct(ExportCsv $csv) {
$this->csv = $csv;
}
public function exportCsv(Request $request)
{
//Ex: tôi muốn export csv danh sách user;
$users = User::get(); // All users
$this->csv->build($users, ['email', 'name'])->download();
}
}
Cũng với đoạn code trên tôi muốn export file csv với tên file tùy chỉnh tôi sẽ làm như sau.
$this
->csv->build(
$users
, [
'email'
,
'name'
])->download(
'your-file-name.csv'
);
Vậy khi tôi muốn xem kết quả xuất ra như thế nào thì tôi sẽ làm như sau:
$csv = $this->csv->getCsv();
$csv->toHTML(); // To output the CSV as an HTML table
$csv->jsonSerialize()(); // To turn the CSV in to an array
Vậy tôi muốn export Csv với header colum thì tôi sẽ làm như sau:
$this->csv->build($users, ['email' => 'Email', 'name' => ['Full Name']])->download('your-file-name.csv');
Ngoài các method trên thì LaraCSV còn có thêm method xử lý event có tên là: beforeEach. Nếu chúng ta call method này thì nó sẽ được call trước khi csv được export ra.
$this->csv->beforeEach(function(){
// Tại đây bạn có thể xử thý data từ model. có thễ add, delete, or edit value tùy thích.
//Ex: tôi thêm một trường vào
$user->codevivu = "Long Phạm";
});
//Để export có thông tin trường mới bạn cần thêm vào đối tượng cần xuất ra theo như bên dưới.
$this->csv->build($users, ['email' => 'Email', 'name' => ['Full Name'], 'codevivu' => 'Author'])->download('your-file-name.csv');
Nguồn : https://codevivu.com/thu-thuat-lap-trinh/laravel-export-csv-voi-laracsv/