最近做了一個項目需要把訂單的信息顯示出來,并且能夠把相關信息放到一個.csv 文件中,下載到瀏覽器。雖然說csv是一種比較簡單的excel表格形式,生成只要按指定格式然后生成.csv文件就可以,但是在使用中也會遇到很多問題,下面給大家分享下PHP下載csv文件及問題總結
首先大家先看個例子,生成csv文件并下載
- //要生成csv文件的數組
- $csvArr=array();
- $csvArr[]=array('用戶編號1','上班日期1','簽到時間1','簽退時間1');
- $csvArr[]=array('用戶編號2','上班日期2','簽到時間2','簽退時間2')
- download_send_headers("data_export_" . date("Y-m-d") . ".csv");
- $head=array('用戶編號','上班日期','簽到時間','簽退時間');
- echo array2csv($csvArr,$head);
- unset($csvArr);
- die();
- function array2csv(array &$array,$head)
- {
- if (count($array) == 0) {
- return null;
- }
- ob_start();
- $df = fopen("php://output", 'w');
- if(!$head){
- $head=array_keys(reset($array));
- }
- fputcsv($df,$head);
- foreach ($array as $row) {
- fputcsv($df, $row);
- }
- fclose($df);
- return ob_get_clean();
- }
- function download_send_headers($filename) {
- // disable caching
- $now = gmdate("D, d M Y H:i:s");
- header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");
- header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate");
- header("Last-Modified: {$now} GMT");
- // force download
- header("Content-Type: application/force-download");
- header("Content-Type: application/octet-stream");
- header("Content-Type: application/download");
- // disposition / encoding on response body
- header("Content-Disposition: attachment;filename={$filename}");
- header("Content-Transfer-Encoding: binary");
- }
新聞熱點
疑難解答