php操作csv文件代码实例汇总
1.读取csv数据,输出到sales.csv文件中:
$sales=array( array('Northeast','2004-01-01','2004-02-01',12.54), array('Northwest','2004-01-01','2004-02-01',546.33), array('Southeast','2004-01-01','2004-02-01',93.26), array('Southwest','2004-01-01','2004-02-01',945.21), array('AllRegions','---','--',1597.34), ); $fh=fopen('sales.csv','w')ordie("Can'topensales.csv"); foreach($salesas$sales_line){ if(fputcsv($fh,$sales_line)===false){ die("Can'twriteCSVline"); } } fclose($fh)ordie("Can'tclosesales.csv");
2.读取csv数据,使用特殊的流输出
$sales=array( array('Northeast','2004-01-01','2004-02-01',12.54), array('Northwest','2004-01-01','2004-02-01',546.33), array('Southeast','2004-01-01','2004-02-01',93.26), array('Southwest','2004-01-01','2004-02-01',945.21), array('AllRegions','---','--',1597.34), ); $fh=fopen('php://output','w'); foreach($salesas$sales_line){ if(fputcsv($fh,$sales_line)===false){ die("Can'twriteCSVline"); } } fclose($fh);
3.读取csv数据,输出到缓冲中
$sales=array( array('Northeast','2004-01-01','2004-02-01',12.54), array('Northwest','2004-01-01','2004-02-01',546.33), array('Southeast','2004-01-01','2004-02-01',93.26), array('Southwest','2004-01-01','2004-02-01',945.21), array('AllRegions','---','--',1597.34), ); ob_start(); $fh=fopen('php://output','w')ordie("Can'topenphp://output"); foreach($salesas$sales_line){ if(fputcsv($fh,$sales_line)===false){ die("Can'twriteCSVline"); } } fclose($fh)ordie("Can'tclosephp://output"); $output=ob_get_contents(); ob_end_clean();
4.读取csv文件的数据
$fp=fopen('sample3.csv','r')ordie("can'topenfile"); print"<table>\n"; while($csv_line=fgetcsv($fp)){ print'<tr>'; for($i=0,$j=count($csv_line);$i<$j;$i++){ //print'<td>'.htmlentities($csv_line[$i]).'</td>'; print'<td>'.htmlentities(iconv("gb2312","utf-8",$csv_line[$i])).'</td>'; } print"</tr>\n"; } print"</table>\n"; fclose($fp)ordie("can'tclosefile");
5.下载CSV文件
$sales=array( array('Northeast','2004-01-01','2004-02-01',12.54), array('Northwest','2004-01-01','2004-02-01',546.33), array('Southeast','2004-01-01','2004-02-01',93.26), array('Southwest','2004-01-01','2004-02-01',945.21), array('中国','2004-01-01','2004-02-01',945.21), ); $fh=fopen('php://output','w')ordie("can'topenphp://output"); $total=0; //告诉浏览器发送的是一个csv文件 header('Content-Type:application/csv'); header('Content-Disposition:attachment;filename="sales.csv"'); //输出表头 fputcsv($output,array('Region','StartDate','EndDate','Amount')); //输出每一行数据,并递增$total foreach($salesas$sales_line){ if(fputcsv($fh,$sales_line)===false){ die("Can'twriteCSVline"); }else{ $total+=$sales_line[3]; } } fputcsv($fh,array('AllRegions','--','--',$total)); fclose($fh)ordie("Can'tclosephp://output");
6.读取CSV文件指定行和区间行
/*****读取CSV文件中的指定行*****/ functionget_file_line_a($file_name,$line){ $n=0; $handle=fopen($file_name,'r'); if($handle){ while(!feof($handle)){ ++$n; $out=fgets($handle,4096); if($line==$n)break; } fclose($handle); } if($line==$n)return$out; returnfalse; } echoget_file_line("windows_2011_s.csv",10);//输入第10行内容 /*****读取CSV文件中的区间行*****/ functionget_file_line_b($file_name,$line_star,$line_end){ $n=0; $handle=fopen($file_name,"r"); if($handle){ while(!feof($handle)){ ++$n; $out=fgets($handle,4096); if($line_star<=$n){ $ling[]=$out; } if($line_end==$n)break; } fclose($handle); } if($line_end==$n)return$ling; returnfalse; } //用get_file_line读取并输出第11行到第20行 $aa=get_file_line("windows_2011_s.csv",11,20);//从第11行到第20行 foreach($aaas$bb){ echo$bb."<br>"; }