Fork me on GitHub

TP5导出scv格式数据,支持百万数据

/**
* 导出CSV格式数据
* @param $headArr 导出内容表头
* @param $exportData 导出数据内容
* @param $title 导出的标题
*/
public static function exportCsv($headArr, $exportData, $title = '')
{
if (empty($headArr) || empty($exportData)) {
throw new \Exception("表头或者内容不能为空");
}
// 输出Excel文件头
$filename = $title . date('Ymd_His') . ".csv";
//清空缓存
ob_end_clean();
header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition: attachment;filename=" . $filename);
header('Cache-Control: max-age=0');
// 打开PHP文件句柄,php://output 表示直接输出到浏览器
$fp = fopen('php://output', 'a');
//处理csv中字符乱码问题
fwrite($fp, chr(0xEF) . chr(0xBB) . chr(0xBF));
// 将数据通过fputcsv写到文件句柄,表头数据
fputcsv($fp, $headArr);
//计数器
$index = 0;
foreach ($exportData as $vale) {
//写入2000条数据清除下内存
if ($index == 2000) {
$index = 0;
//刷新一下输出buffer,防止由于数据过多造成问题
ob_flush();
flush();
}
$index++;
fputcsv($fp, $vale);
}
}
posted @ 2021-06-22 18:02  三冬两夏  阅读(342)  评论(0编辑  收藏  举报