最近做了一个项目需要把订单的信息显示出来,并且能够把相关信息放到一个.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");
- }
新闻热点
疑难解答