PHPcsv文件导出

这两天业务基本做完 弄后台的时候用了xls表格导出

我大奔哥说 这个导出的量少 ,推荐使用 csv 表格导出


于是我研究了一下,发现还确实是,更关键的是 代码量变少了

这个代码


/**
 * Inf csv文件输出
 * Argument :
 * User: 伍先生
 * DateTime: 2020/2/20 11:06
 * Function:  csvsend
 */
function csvsend($dataArr,$head,$title){

    //设置表名
    header('Content-Type: application/vnd.ms-excel');   //header设置
    header("Content-Disposition: attachment;filename=".$title.".csv");
    header('Cache-Control: max-age=0');

    //打开php文件句柄,php://output表示直接输出到PHP缓存,a表示将输出的内容追加到文件末尾
    $fp = fopen('php://output','a');

    //设置表头
    foreach($head as $k=>$v){
        $head[$k] = iconv("UTF-8","GBK//IGNORE",$v);    //将utf-8编码转为gbk。理由是: Excel 以 ANSI 格式打开,不会做编码识别。如果直接用 Excel 打开 UTF-8 编码的 CSV 文件会导致汉字部分出现乱码。
    }

    fputcsv($fp,$head);  //fputcsv() 函数将行格式$head化为 CSV 并写入一个打开的文件$fp。

    foreach($dataArr as $key=>$data){
        foreach($data as $i=> $item){  //$item为一维数组哦
            $ss = $item."\t";
            $data[$i] = iconv("UTF-8","GBK//IGNORE",$ss);  //转为gbk的时候可能会遇到特殊字符‘-’之类的会报错,加 ignore表示这个特殊字符直接忽略不做转换。
        }
        fputcsv($fp,$data);
    }
    fclose($fp);
    exit;
}


调用就更简单了

$data = [
["name"=>"张三",'age'=>18,"sex"=>1],
["name"=>"李四",'age'=>18,"sex"=>2]
];
$title = "学生信息";
$header =['姓名',"年龄",'性别'];
csvsend($data,$header,$title);
伍先生
  • 职业: 程序员,产品
  • 码龄: 8.6
  • 技能: PHP Go 前端
  • 微信: JwCode
  • 公众号/小程序: 渐悟分享