Laravel 导出 CSV
<?php
namespace App\Services;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
class ReportsBase
{
/**
* 写入 CSV 文件
* @param string $file_name
* @param array $arrHeader
* @param array $arrDataList
* @return array
*/
public static function writeFile(string $file_name = '', array $arrHeader = [], array $arrDataList = []): array
{ini_set('memory_limit', '2048M');
$dir_name = 'export/';
$file_name = $dir_name . sprintf("%s", $file_name . ".csv");
$fileData = implode(',', $arrHeader) . "\r\n";
foreach ($arrDataList as $line) {$fileData .= implode(',', str_replace(',', '', $line)) ."\r\n";
}
\Storage::disk('local')->put($file_name, mb_convert_encoding($fileData, 'gbk', 'utf-8'));
return [
'file_path' => $dir_name,
'file_name' => storage_path('app/' . $file_name),
];
}
/**
* 下载文件
* @param $file
* @return BinaryFileResponse
*/
public static function downloadCsv($file): BinaryFileResponse
{return response()->download($file)->deleteFileAfterSend();}
}