当前位置:首页 > PHP教程 > php高级应用 > 列表

php导出csv数据在浏览器中输出提供下载或保存到文件的示例

发布:smiling 来源: PHP粉丝网  添加日期:2020-11-20 10:49:30 浏览: 评论:0 

这篇文章主要介绍了php导出csv数据在浏览器中输出提供下载或保存到文件的示例,需要的朋友可以参考下。

1.在浏览器输出提供下载,代码如下:

  1. /** 
  2.  * 导出数据到CSV文件 
  3.  * @param array $data  数据 
  4.  * @param array $title_arr 标题 
  5.  * @param string $file_name CSV文件名 
  6.  */ 
  7. function export_csv(&$data$title_arr$file_name = '') { 
  8.     ini_set("max_execution_time""3600"); 
  9.     $csv_data = ''
  10.  
  11.     /** 标题 */ 
  12.     $nums = count($title_arr); 
  13.     for ($i = 0; $i < $nums - 1; ++$i) { 
  14.         $csv_data .= '"' . $title_arr[$i] . '",'
  15.     } 
  16.  
  17.     if ($nums > 0) { 
  18.      $csv_data .= '"' . $title_arr[$nums - 1] . "\"\r\n"
  19.     } 
  20.  
  21.     foreach ($data as $k => $row) { 
  22.         for ($i = 0; $i < $nums - 1; ++$i) { 
  23.             $row[$i] = str_replace("\"""\"\""$row[$i]); 
  24.             $csv_data .= '"' . $row[$i] . '",'
  25.         } 
  26.         $csv_data .= '"' . $row[$nums - 1] . "\"\r\n"
  27.         unset($data[$k]); 
  28.     } 
  29.  
  30.     $csv_data = mb_convert_encoding($csv_data"cp936""UTF-8"); 
  31.  
  32.     $file_name = emptyempty($file_name) ? date('Y-m-d-H-i-s', time()) : $file_name
  33.  
  34.     if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE")) { // 解决IE浏览器输出中文名乱码的bug 
  35.      $file_name = urlencode($file_name); 
  36.      $file_name = str_replace('+''%20'$file_name); 
  37.     } 
  38.  
  39.     $file_name = $file_name . '.csv'
  40.     header("Content-type:text/csv;"); 
  41.     header("Content-Disposition:attachment;filename=" . $file_name); 
  42.     header('Cache-Control:must-revalidate,post-check=0,pre-check=0'); 
  43.     header('Expires:0'); 
  44.     header('Pragma:public'); 
  45.     echo $csv_data

2.保存到文件,代码如下:

  1. function export_csv($data$title_arr$file_name = '') { 
  2.  
  3.     $csv_data = ''
  4.  
  5.  
  6.     /** 标题 */ 
  7.     $nums = count($title_arr); 
  8.     for ($i = 0; $i < $nums - 1; ++$i) { 
  9.         $csv_data .= '"' . $title_arr[$i] . '",'
  10.     } 
  11.  
  12.  
  13.     if ($nums > 0) { 
  14.     $csv_data .= '"' . $title_arr[$nums - 1] . "\"\r\n"
  15.     } 
  16.  
  17.  
  18.     foreach ($data as $k => $row) { 
  19.         for ($i = 0; $i < $nums - 1; ++$i) { 
  20.             $row[$i] = str_replace("\"""\"\""$row[$i]); 
  21.             $csv_data .= '"' . $row[$i] . '",'
  22.         } 
  23.         $csv_data .= '"' . $row[$nums - 1] . "\"\r\n"
  24.         unset($data[$k]); 
  25.     } 
  26.  
  27.  
  28.     $file_name = emptyempty($file_name) ? date('Y-m-d-H-i-s', time()) : $file_name
  29.     file_put_contents($file_name$csv_data) ; 

调用示例(保存到文件):

  1. $file_name="/var/www/tmp/test.csv" ; 
  2. $header = array
  3.                     '0' => '参数ID'
  4.                     '1' => '参数名称'
  5.                     '2' => '统计次数'
  6.                     '3' => '统计次数百分比'
  7.                     '4' => '唯一用户数'
  8.                     '5' => '唯一用户数百分比'
  9.                     '6' => '人均次数' 
  10.             ); 
  11.             $csvList = array(array("111""title""12""100%""23""50%""4")) ; 
  12.             export_csv($csvList$header$file_name) ; 

Tags: php导出csv

分享到: