序言
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;
}
