导出类.php
/**
* 数据导出到excel(csv文件)
* @param $filename 导出的csv文件名称 如date("Y年m月j日").'-test.csv'
* @param array $tileArray 所有列名称,一维数组['姓名','年龄',....]
* @param array $dataArray 所有列数据,二维数组['zhangsan','22',....]
*/
public static function exportToExcel($filename, $tileArray=[], $dataArray=[]){
ini_set('memory_limit','512M');
ini_set('max_execution_time',0);
//ob_end_clean();
//ob_start();
header("Content-Type: text/csv");
header("Content-Disposition:filename=".$filename);
$fp = fopen('php://output','w');
fwrite($fp, chr(0xEF).chr(0xBB).chr(0xBF)); //转码 防止乱码(比如微信昵称(乱七八糟的))
fputcsv($fp,$tileArray);
$index = 0;
foreach ($dataArray as $item) {
if($index == 1000){
$index = 0;
//ob_flush();
//flush();
}
$index ++;
fputcsv($fp, $item);
}
//ob_flush();
//flush();
//ob_end_clean();
}
测试代码
$header = ['姓名','年龄'];
$data = [];
for ($i=1; $i<= 1500000; $i ++) {
$tmp['title'] = '张三'.$i;
$tmp['age'] = rand(1,80);
$data[] = $tmp;
}
self::exportToExcel('调研所有数据记录_'.date("YmdHis").'.csv', $header, $data);