序言
php導出數據到csv是一種很常見的功能,且csv相比於excel文件有其一定的優勢,首先csv對數據的行數沒有限制,但是excel對數據的行數有一定的限制,因此,csv文件對於導出大量的數據來說很方便。
相關函數
- set_time_limit (0); //取消腳本運行時間的限制
- ini_set('memory_limit', '256M');//設置php內存限制
- 設置header頭
- $fp = fopen("php://output", "w");//打開php數據輸出緩沖區,並返回一個句柄
- mb_convert_variables('GBK', 'UTF-8', 數據);//將數據的字符集轉成GBK編碼
- fputcsv(句柄, 數據);//將數據格式化為CSV格式並寫入到output流中
- fclose(句柄);//關閉輸入緩沖區
示例代碼
function export() { set_time_limit(0); ini_set('memory_limit', '256M'); //下載csv的文件名 $fileName = '示例.csv'; //設置header頭 header('Content-Description: File Transfer'); header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment; filename="' . $fileName . '"'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); //打開php數據輸入緩沖區 $fp = fopen('php://output', 'a'); $heade = ['姓名', '性別', '手機號']; //將數據編碼轉換成GBK格式 mb_convert_variables('GBK', 'UTF-8', $heade); //將數據格式化為CSV格式並寫入到output流中 fputcsv($fp, $heade); $data = [ ['小明', '男', 17699019191], ['小紅', '男', 17699019191], ['小黑', '女', 17699019191], ['小白', '女', 17699019191], ]; //如果在csv中輸出一個空行,向句柄中寫入一個空數組即可實現 foreach ($data as $row) { //將數據編碼轉換成GBK格式 mb_convert_variables('GBK', 'UTF-8', $row); fputcsv($fp, $row); //將已經存儲到csv中的變量數據銷毀,釋放內存 unset($row); } //關閉句柄 fclose($fp); die; }