PHP匯出csv檔案
阿新 • • 發佈:2018-12-24
$filename="檔名稱"
//直接輸出到瀏覽器
ob_end_flush();
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$filename.'.csv"');
header('Cache-Control: max-age=0');
$fp=fopen('php://output', 'a');
$flush_count=0;//重新整理輸出buffer計數器
$flush_limit=500;//重新整理間隔
//寫入頭部標題
$csv_header=[];
$fields =['編號','姓名','年齡','班級'];
for($i=0;$i<count($fields);$i++){
array_push($csv_header,mb_convert_encoding($fields[$i],'gb2312','utf-8'));//注意編碼問題,若使用icovn部分轉碼失敗直接返回空
}
fputcsv($fp, $csv_header);
//寫入內容
//同寫入標題
//注意內容最好不含英文逗號
//例子
$data=[
['001','張三','18','資訊01'],
['002','李四','19','資訊02'],
['003','王五','18' ,'資訊01'],
];
$all=count($data);
for ($i=0;$i<$all;$i++){//資料庫取資料情況下,逐行取出資料,不浪費記憶體
$flush_count++;
if ($flush_limit==$flush_count){
ob_flush();
flush();
$flush_count=0;
}
$row=$data[$i];
for ($k=0;$k<count($row);$k++){
$row[$k]=mb_convert_encoding($row [$k],'gb2312','utf-8');
}
fputcsv($fp, $row);
}
fclose($fp);