/Hướng dẫn export và download CSV file trong Laravel

Hướng dẫn export và download CSV file trong Laravel

Việc export dữ liệu ra CSV và download là việc cần thiết đối với mỗi dự án.

Hôm nay clipdoisong sẽ hướng dẫn xử lý các nghiệp vụ này trong Laravel mà không sử dụng extensition

Export CSV file và lưu trữ vào storage

$folderPath = storage_path('/exports/data');
$fileName = 'export.csv';
$filePath = $folderPath . '/' . $fileName;
$file = fopen($filePath, 'w');
$aryExport = []; // thực hiện truy vấn lấy dữ liệu từ database
$columnsExport = ['ID', 'Title'];
fputcsv($file, $columnsExport);
foreach ($aryExport as $row) {
    fputcsv($file, [
        $row->id,
        $row->title
    ]);
}
fclose($file);

Export và download file CSV

$columnsExport = ['ID', 'Title'];
$aryExport = []; // thực hiện truy vấn lấy dữ liệu từ database
$callback = function() use($aryExport, $columnsExport) {
    $file = fopen('php://output', 'w');
    fputcsv($file, $columnsExport);
    foreach ($aryExport as $row) {
            fputcsv($file, [
            $row->id,
            $row->title
        ]);
    }
fclose($file);
};
$headers = array(
    "Content-type" => "text/csv",
    "Content-Disposition" => "attachment; filename=$fileName",
    "Pragma" => "no-cache",
     "Cache-Control" => "must-revalidate, post-check=0, pre-check=0",
     "Expires" => "0"
);
// end
return response()->stream($callback, 200, $headers);

Lưu ý:  Một số trường hợp export dữ liệu lớn cần có xử lý chạy command hoặc khai báo lệnh sau

ini_set("memory_limit", "-1");
set_time_limit(0);