php导出csv文件

csv导出的时候会有一个问题:内容中有换行的话,可能会导致数据排版错乱,所以需要使用标准的fputcsv()进行输出,这样可以很好的避免这个问题,或者是将内容中的换行转换成指定的一个字符也可以有效解决,下面是参照网上找的csv导出文件写的一个导出方法,具体思路跟着备注走就好了

注意:涉及到中文的地方,一定要gbk转码,否则会乱码

public static function export($head, $body, $name = null)
    {
        try {
            //设置内存占用
            set_time_limit(0);
            ini_set('memory_limit', '512M');

            //为fputcsv()函数打开文件句柄
            $output = fopen('php://output', 'w') or die("can't open php://output");
            //告诉浏览器这个是一个csv文件
            header("Content-Type: application/csv");
            header("Content-Disposition: attachment; filename=$name.csv");

            //输出表头
            foreach ($head as $i => $v) {
                //CSV的Excel支持GBK编码,一定要转换,否则乱码
                $head[$i] = iconv('utf-8', 'gbk', $v);

            }

            fputcsv($output, $head);
            //输出每一行数据到文件中
            foreach ($body as $e) {
                foreach ($e as &$item) {
            // 将数据中自带的换行替换成 句号“。”
            $item = str_replace([" ", " ", " "],'。',$item);
$item = "="".iconv('utf-8', 'gbk', $item)."""; } //输出内容 fputcsv($output, array_values($e)); } //关闭文件句柄 fclose($output) or die("can't close php://output"); exit; } catch (Exception $e) { return $e->getMessage(); } }

 同事的一种写法:直接echo出数据

  public static function exportCsv($header,$data,$name)
    {
        //csv导出
        $name = iconv('utf-8','gbk',$name);

        $filename = $name.'.csv';
        header("Content-type:text/csv");
        header("Content-Disposition:attachment;filename=".$filename);
        header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
        header('Expires:0');
        header('Pragma:public');

        $body = iconv('utf-8','gbk',$header);

        //数据处理
        foreach ($data as $k => $v) {
            foreach ($v as &$item) {
                $item = str_replace(["
", "
", "
"],'。',$item);

                $item     = "="".iconv('utf-8','gbk',$item).""";
                $body .= $item.",";
            }
            rtrim($body,',');
            $body .= "
";
        }

        echo $body;
        exit;

    }
原文地址:https://www.cnblogs.com/wangfengzhu/p/7117092.html