在实际开发中,经常遇到帮数据导出表格操作。今天我们来讲下导出csv格式方式,这种是最快捷的、占用资源少的方法。这里简单介绍下csv格式,每一行数据间使用 换行符分割,每一列值之间通过逗号分割。这里要注意下 值里面可能含有特殊字符,如果不进行相关转义操作,会造成解析错误。下面也会提供解决方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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函数进行处理,如果不确定的话,可以都进行处理,不影响。

相关评论(0)
您是不是忘了说点什么?

友情提示:垃圾评论一律封号...

还没有评论,快来抢沙发吧!