封装导出csv文件类

来源:互联网 发布:java商城系统源码下载 编辑:程序博客网 时间:2024/06/10 00:45

  摘要:使用场景,从数据表中取出utf-8的二维数组数据,需要通过php输出流的形式下载到客户端,故封装此类。

class ExportCsv {    static function export($file_name = '',$table = array(),$header = array()){        $file_name = $file_name ? $file_name : 'default.csv';        if(!is_array($table) || (count($table) == 0)){            echo '无效数据';            exit();        }        $now = gmdate("D, d M Y H:i:s");        header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");        header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate");        header("Last-Modified: {$now} GMT");        header("Content-Type: application/force-download");        header("Content-Type: application/octet-stream");        header("Content-Type: application/download");        header("Content-Disposition: attachment;filename={$file_name}");        header("Content-Transfer-Encoding: binary");        ob_start();        $df = fopen("php://output", 'w');        if(is_array($header) && (count($header) != 0)){            $header = self::encodeSwitch($header);            fputcsv($df, $header);        }        $table = self::encodeSwitch($table);        foreach($table as $line){            fputcsv($df, $line);        }        fclose($df);        ob_end_flush();    }    static function encodeSwitch($a = array()){        $re = array();        if(!is_array($a)){            return false;        }        foreach($a as $k => $v){            if(is_array($v)){                $re[] = self::encodeSwitch($v);            }else{                $re[] = mb_convert_encoding($v, 'gbk', 'utf-8');            }        }        return $re;    }}


<完>

0 0
原创粉丝点击