php实现导出下载CSV文件
项目开发中,很多时候要将数据导出表格,使用CSV格式文件无疑是很方便和快速的,那么该如何实现呢?
一、导出方法
function outputCsv()
{
$list = array(
array('aaa', 'bbb', 'ccc', 'dddd'),
array('123', '456', '789'),
array('"aaa"', '"bbb"')
);
$title = ["field-1", "field-2", "field-3", "field-4"];
$filename = "导出.csv";
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename=' . $filename);
header('Cache-Control: max-age=0');
$fp = fopen('php://output', "a");
mb_convert_variables('GBK', 'UTF-8', $title);
fputcsv($fp, $title);
foreach ($list as $row) {
mb_convert_variables('GBK', 'UTF-8', $row);
fputcsv($fp, $row);
}
fclose($fp);
exit();
}
二、调用方法
outputCsv()
其它
设置脚本最大执行时间、设置内存限定
如果预期执行时间较长、占用内存较大时,在函数开始位置设定set_time_limit(0);
ini_set('memory_limit','500M');
数据量非常大,可以定时刷新buff,清空数据缓冲区
$num = 0;
foreach ($list as $row) {
mb_convert_variables('GBK', 'UTF-8', $row);
fputcsv($fp, $row);
if($num == 100000){
//刷新一下输出buffer,防止缓存数据过多
ob_flush();
flush();
$num = 0;
}
$num++;
}