在实际开发中,经常遇到帮数据导出表格操作。今天我们来讲下导出csv格式方式,这种是最快捷的、占用资源少的方法。这里简单介绍下csv格式,每一行数据间使用 换行符分割,每一列值之间通过逗号分割。这里要注意下 值里面可能含有特殊字符,如果不进行相关转义操作,会造成解析错误。下面也会提供解决方法
function quoteCsvField($str,$force=false){ if($force || strpos($str,',')!==false || strpos($str,'"') !==false || strpos($str,"\n") !==false || strpos($str,"\n") !==false){ $str='"'.str_replace('"','""',$str).'"'; } return $str; } //--数据,这里简单表示下 $result=array( array('brands'=>'游乐园','dename'=>'旅游部','appdate'=>'2020-05','remark'=>"游乐园项目\n详情:3月签约,4月回款1000"), array('brands'=>'房产中介','dename'=>'房产','appdate'=>'2020-04','remark'=>"已回款"), ); header("Content-type:text/csv"); $filename='上线广告'; header("Content-Disposition:attachment;filename=".$filename.".csv"); header('Cache-Control:must-revalidate,post-check=0,pre-check=0'); header('Expires:0'); header('Pragma:public'); $html='品牌,部门,时间,备注说明'."\n"; foreach($result as $k=>$v) { $html.=$v['brands'].','.$v['dename'].','.$v['appdate'].','.quoteCsvField($v['remark'])."\n"; } echo $html; die;
对可能有特殊字符的值进行 quoteCsvField函数进行处理,如果不确定的话,可以都进行处理,不影响。
发表评论 取消回复