CSV
,是Comma Separated Value(逗號分隔值
)的英文縮寫,一般都是純文本文件。
若是你導出的Excel沒有什麼高級用法
的話,只是作導出數據
用那麼建議使用本方法,要比PHPexcel
要高效的多。
二十萬數據導出大概須要2
到3
秒。php
/** * 導出excel(csv) * @data 導出數據 * @headlist 第一行,列名 * @fileName 輸出Excel文件名 */ function csv_export($data = array(), $headlist = array(), $fileName) { header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="'.$fileName.'.csv"'); header('Cache-Control: max-age=0'); //打開PHP文件句柄,php://output 表示直接輸出到瀏覽器 $fp = fopen('php://output', 'a'); //輸出Excel列名信息 foreach ($headlist as $key => $value) { //CSV的Excel支持GBK編碼,必定要轉換,不然亂碼 $headlist[$key] = iconv('utf-8', 'gbk', $value); } //將數據經過fputcsv寫到文件句柄 fputcsv($fp, $headlist); //計數器 $num = 0; //每隔$limit行,刷新一下輸出buffer,不要太大,也不要過小 $limit = 100000; //逐行取出數據,不浪費內存 $count = count($data); for ($i = 0; $i < $count; $i++) { $num++; //刷新一下輸出buffer,防止因爲數據過多形成問題 if ($limit == $num) { ob_flush(); flush(); $num = 0; } $row = $data[$i]; foreach ($row as $key => $value) { $row[$key] = iconv('utf-8', 'gbk', $value); } fputcsv($fp, $row); } }