PHP 导出数据 EXCEL表格

public function exportOrderSectionFile()
    {
        if(IS_GET)
        {
            $request = $this->requests;
            $map['dor.status'] = 1;
            $where['status'] = 1;
            if($request['start_date'])
            {
                $map['dor.date'] = array('egt',$request['start_date']);
                $where['date'] = array('egt',$request['start_date']);
            }
            if($request['end_date'])
            {
                $map['dor.date'] = array('elt',$request['end_date']);
                $where['date'] = array('elt', $request['end_date']);
            }
            $model = M('order_revenue');
            $list = $model->table('db_order_revenue dor')->join('db_order o on o.id=dor.order_id')->join('db_district d on d.id = o.district_id')->join('db_district c on d.upid = c.id')->where($map)->field('o.id,d.upid province_id,c.name province_name,dor.amount,dor.date')->select();
            $provinceList = $model->table('db_order_revenue dor')->join('db_order o on o.id = dor.order_id')->join('db_district d on d.id = o.district_id')->join('db_district c on d.upid = c.id')->where($map)->field('o.id,d.upid province_id,c.name province_name,dor.amount,dor.date')->group('dor.order_id')->select();
            $total_benefit = M('order_revenue')->where($where)->sum('amount');
            $total_num = M('order_revenue')->where($where)->count('distinct order_id');
            $province_list = [];
            if($list)
            {
                foreach($list as $k => $v)
                {
                    $province_list[$v['province_id']]['order_id'] = $v['id'];
                    $province_list[$v['province_id']]['province_id'] = $v['province_id'];
                    $province_list[$v['province_id']]['province_name'] = $v['province_name'];
                    $province_list[$v['province_id']]['amount']+=$v['amount'];
                }
            }
            $province_rate = [];
            if($provinceList)
            {
                foreach($provinceList as $k => $v)
                {
                    $province_rate[$v['province_id']]['order_id'] = $v['id'];
                    $province_rate[$v['province_id']]['province_id'] = $v['province_id'];
                    $province_rate[$v['province_id']]['province_name'] = $v['province_name'];
                    $province_rate[$v['province_id']]['num']+=1;
                    $province_rate[$v['province_id']]['amount'] = $province_list[$v['province_id']]['amount'];
                }
            }
            if($province_rate)
            {
                foreach($province_rate as $k => $v)
                {
                    $province_rate[$k]['rate'] = (number_format($v['num']/$total_num,4)*100)."%";
                }
            }
            if(empty($province_rate))
            {
                $this->returnInfo(0, '暂时没有可导出的数据');
            }
            header('Content-Type: application/vnd.ms-excel');
            header('Content-Disposition: attachment;filename=订单分布地域统计.csv');
            header('Cache-Controller: max-age=0');
            $fp = fopen('php://output', 'a');
            $title = array('分布省份','订单总数量','占比');
            $return = eval('return '.iconv('utf-8','gb2312',var_export($title,true)).';');
            fputcsv($fp,$return);
            $mnt = 0;
            $limit = 10000;
            foreach($province_rate as $k => $v)
            {
                $mnt++;
                if($mnt==10000)
                {
                    ob_flush();
                    flush();
                    $mnt = 0;
                }
                $data = array($v['province_name'],$v['amount'],$v['rate']);
                $row = eval('return '.iconv('utf-8', 'gb2312',var_export($data,true)).';');
                fputcsv($fp, $row);
            }
            exit();

        }
        $this->returnInfo(1,'');
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值