laravel实现十几万数据直接浏览器导出csv文件 able

public function export(Request $request)
{
  // 查询数据库数据
  $list = .....;
  $this->userListExport($list);
}

public function userListExport($list)
{
// 导出充值记录的头部信息
$cell = ['头像', '微信昵称', '备注', ];

$cellData = [];
foreach ($list as &$value) {
       // 填充数据
$cellData[] = ([
'',
'',
'',
]);
}
$this->exportUser($cell, $cellData);
}


public function exportUser($cell, $data, $title = '客户列表')
{
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="' . $title . '.csv"');
header('Cache-Control: max-age=0');

set_time_limit(0); // 设置脚本最大执行时间 为0
ini_set('memory_limit', '1024M'); // 临时设置最大内存占用

// 打开PHP文件句柄,php://output 表示直接输出到浏览器
$fp = fopen('php://output', 'a');

$column_name = [];
// 将中文标题转换编码,否则乱码
foreach ($cell as $i => $v) {
$column_name[$i] = iconv('utf-8', 'GBK//IGNORE', $v);
}

// 将标题名称通过fputcsv写到文件句柄
fputcsv($fp, $column_name);
foreach ($data as $row) {
foreach ($row as $key => $item) {
$row[$key] = iconv('utf-8', 'GBK//IGNORE', $item);
}
fputcsv($fp, $row);
}
$res = ['file' => $title];
return response()->json($res);
}
原文地址:https://www.cnblogs.com/jiaoda/p/15671505.html