PHP csv导出数据

 全部导出和时间导出

html代码,全程并不需要引用什么插件

<include file="public@header"/>
<link href="__TMPL__/public/assets/css/style.css" rel="stylesheet">
</head>
<body>
<div class="margin-top-20 body_top">
    <div class="form-inline">
        <input type="submit" name="all" class="btn btn-info quanbu" value="全部导出"/>

        <input style="margin-left: 15px" type="text" name="data" placeholder="日期范围" class="form-control month" id="test6" autocomplete="off">
        <input type="submit" class="btn btn-info shijian" value="导出"/>
    </div>
</div>

</body>
<script src="__STATIC__/js/admin.js"></script>
<script src="__STATIC__/js/laydate/laydate.js"></script>
<script>
    //日期范围
    laydate.render({
        elem: '#test6'
        ,range: true
    });

    $('.quanbu').on('click',function () {
        $.ajax({
            url: "/systems/Sum/quanbu",
            type: "post",
            dataType: "json",
            // data:{'data':nian},
            success: function (back) {
                if (back.code == 1) {
                    document.location.href = (back.data);
                } else {
                    layer.msg("导出csv出错!");
                }
            },
            error: function (e) {
                console.log(e)
            }
        });
    });

    $('.shijian').on('click',function () {
        var data=$('.month').val();

        $.ajax({
            url: "/systems/Sum/shijian",
            type: "post",
            dataType: "json",
            data:{'data':data},
            success: function (back) {
                if (back.code == 1) {
                    document.location.href = (back.data);
                } else {
                    layer.msg("导出csv出错!");
                }
            },
            error: function (e) {
                console.log(e)
            }
        });
    })
</script>

php代码

 public function quanbu(){
        //全部导出
        $req=Db::name('cy_sum')
            ->alias('a')
            ->field('s.store_name,b.company_name as bloc_name,d.company_name as dealer_name,a.type,a.garment,a.garment_function,a.clothing,a.clothing_function,a.functional_finishing,a.create_time')
            ->join('store s','a.sid=s.id')
            ->join('bloc b','a.bid=b.id')
            ->join('dealer d','a.did=d.id')
            ->select()
            ->toArray();

        foreach ($req as $k=>$v){
            switch ($req[$k]['type']) {
                case 1:
                    $req[$k]['type'] = '定制';
                    break;
                case 2:
                    $req[$k]['type'] = '定制团单';
                    break;
                case 3:
                    $req[$k]['type'] = '样衣';
                    break;
                case 4:
                    $req[$k]['type'] = '大货';
                    break;
                case 5:
                    $req[$k]['type'] = '面料试样';
                    break;
                case 6:
                    $req[$k]['type'] = '售后订单';
                    break;
            }
        }

        $csv_data = '';
        //标题
        $csv_data .= "门店,集团,经销商,订单类型,成衣数量,成衣+功能数量,制衣数量,制衣+功能数量,后整理加工,日期
";

        $row = array();
        foreach ($req as $k=>$val){
            $row['store_name'] = $val['store_name'];
            $row['bloc_name'] = $val['bloc_name'];
            $row['dealer_name'] = $val['dealer_name'];
            $row['type'] = $val['type'];
            $row['garment'] = $val['garment'];
            $row['garment_function'] = $val['garment_function'];
            $row['clothing'] = $val['clothing'];
            $row['clothing_function'] = $val['clothing_function'];
            $row['functional_finishing'] = $val['functional_finishing'];
            $row['create_time'] = date('Y-m-d',$val['create_time']);
            $csv_data .= join(',', array_values($row))."
";
        }

        $file_name = date('YmdHis', time()).'detail.csv';
        //导出数据
        $url = save_csv($file_name, $csv_data);

        $this->success('成功!','',$url);
        exit();
    }

    public function shijian(){

        $list=$this->request->param();
        //时间导出
        $data=explode("- ",$list['data']);

        $data[0]=strtotime($data[0]);
        $data[1]=strtotime($data[1]);

        $req=Db::name('cy_sum')
            ->alias('a')
            ->field('s.store_name,b.company_name as bloc_name,d.company_name as dealer_name,a.type,a.garment,a.garment_function,a.clothing,a.clothing_function,a.functional_finishing,a.create_time')
            ->join('store s','a.sid=s.id')
            ->join('bloc b','a.bid=b.id')
            ->join('dealer d','a.did=d.id')
            ->whereTime('a.create_time', 'between', [$data[0], $data[1]])
            ->select()
            ->toArray();

        if (empty($req)){
            $this->error('该时间段无数据 !');
        }

        foreach ($req as $k=>$v){
            switch ($req[$k]['type']) {
                case 1:
                    $req[$k]['type'] = '定制';
                    break;
                case 2:
                    $req[$k]['type'] = '定制团单';
                    break;
                case 3:
                    $req[$k]['type'] = '样衣';
                    break;
                case 4:
                    $req[$k]['type'] = '大货';
                    break;
                case 5:
                    $req[$k]['type'] = '面料试样';
                    break;
                case 6:
                    $req[$k]['type'] = '售后订单';
                    break;
            }

        }

        $csv_data = '';
        //标题
        $csv_data .= "门店,集团,经销商,订单类型,成衣数量,成衣+功能数量,制衣数量,制衣+功能数量,后整理加工,日期
";

        $row = array();
        foreach ($req as $k=>$val){
            $row['store_name'] = $val['store_name'];
            $row['bloc_name'] = $val['bloc_name'];
            $row['dealer_name'] = $val['dealer_name'];
            $row['type'] = $val['type'];
            $row['garment'] = $val['garment'];
            $row['garment_function'] = $val['garment_function'];
            $row['clothing'] = $val['clothing'];
            $row['clothing_function'] = $val['clothing_function'];
            $row['functional_finishing'] = $val['functional_finishing'];
            $row['create_time'] = date('Y-m-d',$val['create_time']);
            $csv_data .= join(',', array_values($row))."
";
        }

        $file_name = date('YmdHis', time()).'detail.csv';
        //导出数据
        $url = save_csv($file_name, $csv_data);

        $this->success('成功!','',$url);
        exit();
/**
 * @param $file_name //请求参数 文件名
 * @param $content //请求参数 根据内容
 * @return  url
 * 保存文件导出csv
 */
function save_csv($file_name,$content){
    $content = mb_convert_encoding($content, "cp936", "UTF-8");
    //这里的CSV即你项目的根目录下新建一个CSV文件夹
    //我们给每个用户动态的创建一个文件夹
    $file_path = 'CSV/'.date('Ymd', time());
    //判断该用户文件夹是否已经有这个文件夹
    if(!file_exists("./upload/".$file_path)) {
        mkdir("./upload/".$file_path, 0777, true);
    }
    $path = ('./upload/'.$file_path.'/'.$file_name);
    $fp = fopen($path,'a');
    // 写入并关闭资源
    fwrite($fp, $content);
    fclose($fp);
    $path = cmf_get_root() . '/upload/' .$file_path.'/'.$file_name;
    return $path;
}
/**
 * 获取网站根目录
 * @return string 网站根目录
 */
function cmf_get_root()
{
    $request = Request::instance();
    $root    = $request->root();
    $root    = str_replace('/index.php', '', $root);
    if (defined('APP_NAMESPACE') && APP_NAMESPACE == 'api') {
        $root = preg_replace('//api$/', '', $root);
        $root = rtrim($root, '/');
    }

    return $root;
}

无论导出多大的数据,都不会出现乱码

人生得意须尽欢,莫使金樽空对月.
原文地址:https://www.cnblogs.com/luojie-/p/11769784.html