zoukankan      html  css  js  c++  java
  • 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;
    
        }
  • 相关阅读:
    矩阵游戏
    water
    string
    react中怎么实现类似vue的空标签
    git clone项目 权限 问题
    npm 时 确实core-js 问题
    修改本地git仓库用户名和邮箱
    cnpm时报错
    wowza视频录制接口
    Juery鼠标放上去、移开
  • 原文地址:https://www.cnblogs.com/wangfengzhu/p/7117092.html
Copyright © 2011-2022 走看看