csv 文件操作

jerry thinkphp 2015年11月19日 收藏
php处理csv文件,csv可以用excel文件打开,操作方便.
  1. <?php


  2. $data = array (
  3.         array (
  4.                 '张三',
  5.                 '男',
  6.                 '34岁',
  7.                 '北京' 
  8.         ),
  9.         array (
  10.                 '李四',
  11.                 '男',
  12.                 '38岁',
  13.                 '天津' 
  14.         ),
  15.         array (
  16.                 '王五',
  17.                 '男',
  18.                 '90岁',
  19.                 '湖北' 
  20.         ),
  21.         array (
  22.                 '赵六',
  23.                 '男',
  24.                 '12岁',
  25.                 '陕西' 
  26.         ) 
  27. );



  28. /*
  29.  * 功能描述:将数组数据写入cvs文件
  30.  * 
  31.  * 参数:
  32.  * $data:需要写入的数组格式的数据
  33.  * $filename:csv文件的名称,如果没有确定,默认为当前时间(格式为:YmdHis)
  34.  * 
  35.  * 
  36.  * */
  37. function write_csv($data = null, $filename = null) {
  38.     if (! ($data || $filename)) {
  39.         return false;
  40.     }
  41.     
  42.     $fp = fopen ( $filename , 'w' );
  43.     
  44.     foreach ( $data as $fields ) {
  45.         fputcsv ( $fp, $fields );
  46.     }
  47.     
  48.     fclose ( $fp );
  49. }


  50. /*
  51.  * 功能描述:不写入cvs文件,并且输出的到浏览器
  52.  *
  53.  * 参数:
  54.  * $data:需要写入的数组格式的数据
  55.  * $filename:csv文件的名称,如果没有确定,默认为当前时间(格式为:YmdHis)
  56.  *
  57.  *
  58.  * */
  59. function output_csv($data = null, $filename = null) {
  60.     
  61.     if (! ($data || $filename)) {
  62.         return false;
  63.     }
  64.     
  65.     header('Content-Type:application/force-download');
  66.     header("content-Disposition:filename={$filename}");
  67.     
  68.     foreach ( $data as $fields ) {
  69.         foreach ($fields as $value){
  70.             echo $value.',';
  71.         }
  72.         echo "\r\n";
  73.     }
  74.     


  75.     
  76. }


  77. /*
  78.  * 功能描述:读取cvs文件
  79.  *
  80.  * 参数:
  81.  * $filename:要读取的csv文件的名称
  82.  *
  83.  *
  84.  * */
  85. function read_csv($filename=null) {
  86.     if(!$filename){
  87.         return false;
  88.     }

  89.     $handle=fopen($filename,'r');
  90.     if(!$handle){
  91.         return false;
  92.     }
  93.     
  94.     $row=1;
  95.     while($data=fgetcsv($handle,1000,",")){
  96.         $num=count($data);
  97.         echo "<h1>  第 $row 行 ,共有 $num 个字段 <br /></h1>\n";
  98.         $row ++;
  99.         for ($c=0;$c<$num;$c++){
  100.             echo $data[$c]."\t";
  101.         }
  102.     }
  103.     

  104. }

  105. /*
  106.  * 功能描述:读取cvs文件,输出到浏览器,采用file_get_contents处理
  107.  *
  108.  * 参数:
  109.  * $filename:要读取的csv文件的名称
  110.  *
  111.  *
  112.  * */
  113. function read_output_file_get_contents($filename=null){

  114.     if(!$filename){
  115.         return false;
  116.     }
  117.     header('Content-Type:application/force-download');
  118.     header("content-Disposition:filename={$filename}");
  119.     
  120.     echo file_get_contents($filename);

  121. }

  122. /*
  123.  * 功能描述:读取cvs文件,输出到浏览器,采用fopen处理
  124.  *
  125.  * 参数:
  126.  * $filename:要读取的csv文件的名称
  127.  *
  128.  *
  129.  * */
  130. function read_output_fopen($filename=null){

  131.     if(!$filename){
  132.         return false;
  133.     }
  134.     header('Content-Type:application/force-download');
  135.     header("content-Disposition:filename={$filename}");
  136.     
  137.     
  138.     $file_handle = fopen($filename, "r");
  139.     while (!feof($file_handle)) {
  140.         $line = fgets($file_handle);
  141.         echo $line;
  142.     }
  143.     fclose($file_handle);

  144. }

  145. //write_csv($data,'test.csv');//将数据写入csv文件

  146. //output_csv($data,'test.csv');//不写入csv文件,直接输出到浏览器下载

  147. //read_csv('test.csv');//读取指定的csv文件

  148. //read_output_file_get_contents('test.csv');//读取cvs文件,输出到浏览器,采用file_get_contents处理

  149. //read_output_fopen('test.csv');//读取cvs文件,输出到浏览器,采用fopen处理