zoukankan      html  css  js  c++  java
  • 使用PHP生成并导出CSV文件

    CSV文件是以纯文本形式存储的,一般以逗号为分隔符。
    这里主要简单介绍下如何导出CSV文件。

    一、浏览器导出CSV文件格式

    /**
     * 导出CSV文件
     */
    function exportCsv()
    {
        // 需要导出的内容
        $data = [
            ['name' => '张三', 'score' => '80'],
            ['name' => '李四', 'score' => '90'],
            ['name' => '王五', 'score' => '60'],
        ];
        // 文件名,这里都要将utf-8编码转为gbk,要不可能出现乱码现象
        $filename = $this->utfToGbk('导出csv文件.csv');
    
        // 拼接文件信息,这里注意两点
        // 1、字段与字段之间用逗号分隔开
        // 2、行与行之间需要换行符
        $fileData = $this->utfToGbk('姓名, 分数') . "
    ";
        foreach ($data as $value) {
            $temp = $value['name'] . ',' .
                    $value['score'];
            $fileData .= $this->utfToGbk($temp) . "
    ";
        }
    
        // 头信息设置
        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');
        echo $fileData;
        exit;
    }
    
    
    /**
     * 字符转换(utf-8 => GBK)
     */
    function utfToGbk($data)
    {
        return iconv('utf-8', 'GBK', $data);
    }

    二、在服务器生成CSV文件

    /**
     * 下载CSV文件
     */
    public function downLoadCsv()
    {
        // 需要导出的内容
        $data = [
            ['name' => '张三', 'score' => '80'],
            ['name' => '李四', 'score' => '90'],
            ['name' => '王五', 'score' => '60'],
        ];
        // 文件名,这里都要将utf-8编码转为gbk,要不可能出现乱码现象
        $filename = $this->utfToGbk('生成csv文件.csv');
    
        // 拼接文件信息,这里注意两点
        // 1、字段与字段之间用逗号分隔开
        // 2、行与行之间需要换行符
        $fileData = $this->utfToGbk('姓名, 分数') . "
    ";
        foreach ($data as $value) {
            $temp = $value['name'] . ',' .
                $value['score'];
            $fileData .= $this->utfToGbk($temp) . "
    ";
        }
    
        $filePath = __DIR__ . '/' . $filename;
        // 将一个字符串写入文件
        file_put_contents($filePath, $fileData);
        return $filePath;
    }
    
    
    /**
     * 字符转换(utf-8 => GBK)
     */
    public function utfToGbk($data)
    {
        return iconv('utf-8', 'GBK', $data);
    }
  • 相关阅读:
    mybatis常用配置
    初识mybatis(二)
    初识mybatis
    Android开发——Android中的二维码生成与扫描
    [原]openstack-kilo--issue(六):Authorization Failed: The resource could not be found. (HTTP 404)
    [转]正确配置Linux系统ulimit值的方法
    [原]ubuntu14.04 网卡逻辑修改没有文件/etc/udev/rules.d/70-persistent-net.rules
    [转][原]openstack-kilo--issue(六)kilo版openstack的dashboard在session超时后重新登录报错解决办法
    [转]观察进程的内存占用情况
    [转]Linux下权限掩码umask
  • 原文地址:https://www.cnblogs.com/woods1815/p/11875913.html
Copyright © 2011-2022 走看看