php导出数据到excel中(CI框架写的例子)

   public  function exportCSV($params,$export_flag){
        try{
            set_time_limit(0);
            @ini_set('memory_limit','256M');
            //设置好告诉浏览器要下载excel文件的headers
            header('Content-Description: File Transfer');
            header('Content-Type: application/vnd.ms-excel;charset=utf-8');
            $file_name = 'rw_asworkorder_'.date('ymdhis',time()).'.csv';
            header('Content-Disposition: attachment; filename="'.$file_name.'"');
            header('Expires: 0');
            header('Cache-Control: must-revalidate');
            $fp = fopen('php://output', 'a');//打开output流
            $columns = ['序号','工单号','系统订单号','平台订单号','发货仓库','工单状态','工单类型','店铺名称','快递公司','快递单号','发起时间','结案时间','发起人','最后回复人','结案人','售后诉求','历史回复','商品编码','商品型号','商品数量','商品金额','收货人','联系方式','地址'];

            foreach ($columns as $i => $v) {
                $columns[$i] = iconv('utf-8', 'GBK', $v);
            }
            fputcsv($fp, $columns);//将数据格式化为CSV格式并写入到output流中
            ob_flush();
            flush();
            //获取总数
            $this->aftersale_work_order_model->aftersale_work_order_sql($params,$export_flag=='1' ? true :false );
            $total_count = $this->db->count_all_results();
            //读取数据
            $limit = 10000;
            $id = 1;
            for ($i=0;$i<intval($total_count/$limit)+1;$i++){
                $params['offset'] = $i*$limit;
                $params['limit'] = $limit;
                //业务需求数据
                $sale_order_list = $this->aftersale_work_order_model->aftersale_work_order_search($params,$export_flag=='1' ? true : false);
                foreach ($sale_order_list['records'] as $key=>$value){
                    $sale_order_list['records'][$key]['address_detail'] = $sale_order_list['records'][$key]['state'].$sale_order_list['records'][$key]['city'].$sale_order_list['records'][$key]['district'].$sale_order_list['records'][$key]['town'].$sale_order_list['records'][$key]['address'];
                    $params_answer['code'] =$sale_order_list['records'][$key]['code'];
                    $data_answer = $this->aftersale_work_order_messages_model->aftersale_messages_search($params_answer);
                    if(!empty($data_answer['records'][0]['uid_name'])){
                        $sale_order_list['records'][$key]['last_answer_user'] = $data_answer['records'][0]['uid_name'];
                        $sale_order_list['records'][$key]['last_answer_message'] = $data_answer['records'][0]['message'];
                    }else{
                        $sale_order_list['records'][$key]['last_answer_user'] = '';
                        $sale_order_list['records'][$key]['last_answer_message'] = '';
                    }

                }
                $records = $sale_order_list['records'];
                foreach ( $records as $item ) {
                    $row = array($id);
                    array_push($row,$item['code']);
                    array_push($row,$item['sale_order_code']);
                    array_push($row,$item['platform_code']);
                    array_push($row,iconv('utf-8','GBK',$item['storage_name']));
                    //状态
                    switch ($item['status']){
                        case 1:
                            array_push($row,iconv('utf-8','GBK','待处理'));
                            break;
                        case 2:
                            array_push($row,iconv('utf-8','GBK','处理中'));
                            break;
                        case 3:
                            array_push($row,iconv('utf-8','GBK','待结案'));
                            break;
                        case 4:
                            array_push($row,iconv('utf-8','GBK','已结案'));
                            break;
                        default:
                            array_push($row,iconv('utf-8','GBK',' '));
                            break;

                    }
                    //状态
                    switch ($item['type']){
                        case 1:
                            array_push($row,iconv('utf-8','GBK','拦截'));
                            break;
                        case 2:
                            array_push($row,iconv('utf-8','GBK','丢件'));
                            break;
                        case 3:
                            array_push($row,iconv('utf-8','GBK','修改收货信息'));
                            break;
                        case 4:
                            array_push($row,iconv('utf-8','GBK','错发'));
                            break;
                        case 5:
                            array_push($row,iconv('utf-8','GBK','漏发'));
                            break;
                        case 6:
                            array_push($row,iconv('utf-8','GBK','催件'));
                            break;
                        case 7:
                            array_push($row,iconv('utf-8','GBK','破损'));
                            break;
                        case 8:
                            array_push($row,iconv('utf-8','GBK','其它'));
                            break;
                        default:
                            array_push($row,iconv('utf-8','GBK',' '));
                            break;

                    }
                    array_push($row,iconv('utf-8','GBK',$item['shop_name']));
                    array_push($row,iconv('utf-8','GBK',$item['delivery_name']));
                    array_push($row,$item['number']);
                    array_push($row,$item['create_time']);
                    array_push($row,$item['close_time']);
                    array_push($row,iconv('utf-8','GBK',$item['create_uid_name']));
                    array_push($row,iconv('utf-8','GBK',$item['last_answer_user']));
                    array_push($row,iconv('utf-8','GBK',$item['close_uid_name']));
                    array_push($row,iconv('utf-8','GBK',$item['aftersale_appeal']));
                    //最后回复
                    array_push($row,iconv('utf-8','GBK',$item['last_answer_message']));
                    array_push($row,$item['commodity_code']);
                    array_push($row,iconv('utf-8','GBK',$item['model']));
                    array_push($row,$item['quantity']);
                    array_push($row,$item['money']);
                    array_push($row,iconv('utf-8','GBK',$item['name']));
                    array_push($row,$item['mobile']);
                    array_push($row,iconv('utf-8','GBK',$item['address_detail']));
                    fputcsv($fp, $row);
                    $id++;
                }
                // 将已经写到csv中的数据存储变量销毁,释放内存占用
                unset($records);
                unset($sale_order_list);
                ob_flush();
                flush();
            }
            fclose($fp);
        }catch (Exception $e){
            print $e->getMessage();
            $params = array(
                'statusCode'=>100,
                'message'=>$e->getMessage()
            );
            echo json_encode($params);
            exit();
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值