1,通過PHP輸出流方式導出
php://output是一個可寫的輸出流,允許程序像操作文件一樣將輸出寫入到輸出流中,PHP會把輸出流中的內容發送給web服務器並返回給發起請求的瀏覽器 保存為csv文件
2, 刷新一下輸出buffer,防止由於數據過多造成問題 ;
ob_flush(); flush();配合使用
3,實現代碼
/** * 導出CSV * @param $rows * @param string $file_name */ function exportCsv($rows, $file_name = '數據') { $filename = $file_name. date('YmdHi') . '.csv'; //設置文件名 header("Content-type:text/csv"); header("Content-Disposition:attachment;filename=\"" . $filename . "\""); header('Cache-Control:must-revalidate,post-check=0,pre-check=0'); header('Expires:0'); header('Pragma:public'); $fp = fopen('php://output', 'a'); $cnt = 0; // 計數器 $limit = 5000; // 每隔$limit行,刷新輸出buffer //加上bomtou utf-8正常顯示,但編輯之后會有問題,要另存為xls、xlsb、xlsx等格式 fwrite($fp, "\xEF\xBB\xBF"); foreach ($rows as $row) { $cnt++; if ($limit == $cnt) { //刷新輸出buffer,防止由於數據過多造成問題 ob_flush(); flush(); $cnt = 0; } fputcsv($fp, $row); unset($v); unset($row); } }