thinkphp5 excel导出

excel目录:/vendor/Classes

下面是贴出的代码:

<?php
namespace app\index\controller;
use think\Controller;
use think\Model;
use think\Db;

class Excel extends Controller{
     /*单个数据导出*/
    public function excels($id,$start_time,$end_time){
        $Mdevice=Model('device');
        $Md_user=Model('deviceuser');
        $Muser=Model('user');
        $Mdevicelog=Model('devicelog');

        $start_time=strtotime($start_time);
        $end_time=strtotime($end_time);
        $day=24*60*60;
        $overhaul=time() - 60*24*60*60;
        $score=100;                    //综合得分
        $fault=0;                      //故障次数
        $overproof=0;                  //超标次数
        $standar=array();              //记录超标值
        $i=1;
        $user_where['name']=session('pcname');
        $user=$Muser->field("id,name,phone,user_name,city_id,shop_id,ywh_stand,type")->where($user_where)->find();
        $ywh_stand=$user['ywh_stand'] ? 2:2; //超标标准
        $device_find=$Mdevice
            ->field("b.device_id,a.code,b.shop_name,b.address,a.id,a.ywh,a.pm,a.nmhc,(CASE WHEN a.overhaul< $overhaul THEN '需清洗' ELSE '正常' END) AS overhaul")
            ->alias("a")
            ->join("sn_deviceuser b","a.id=b.device_id")
            ->where("a.id={$id}")
            ->find();
        // 导出数据
        $devicelog_where['device_id']=$id;
        $devicelog_where['times']=array("BETWEEN","$start_time,$end_time");
        $devicelog_where['ywh']=["NEQ",0];
        $devicelog=$Mdevicelog
            ->field("ywh,pm,nmhc,state,times")
            ->where($devicelog_where)
            ->order("id desc")
            ->select();
        foreach($devicelog as $k=>$v){
        	$standar[$k]['state']=Dstate($v['state']);
            $standar[$k]['ywh']=$v['ywh'];
            $standar[$k]['pm']=$v['pm'];
            $standar[$k]['nmhc']=$v['nmhc'];
            $standar[$k]['times']=date("Y-m-d H:i:s",$v['times']);
            $standar[$k]['overhaul']='正常';
            if($v['state']==3){
            	$fault++;
                $standar[$k]['overhaul']='故障';
            }
            if($v['state']==2){
                $standar[$k]['overhaul']='离线';
            }
            if($v['ywh']>=$ywh_stand){
            	$overproof++;
                $standar[$k]['state']=Dstate($v['state']);
                $standar[$k]['ywh']=$v['ywh'];
                $standar[$k]['pm']=$v['pm'];
                $standar[$k]['nmhc']=$v['nmhc'];
                $standar[$k]['times']=date("Y-m-d H:i:s",$v['times']);
                $standar[$k]['overhaul']='超标';
            }
        }
        vendor("Classes.PHPExcel");
        vendor("Classes.PHPExcel.Writer.Writer");
        vendor("Classes.PHPExcel.Writer.Abstract");
        vendor("Classes.PHPExcel.Writer.Excel5");
        vendor("Classes.PHPExcel.Writer.Excel2007");
        vendor("Classes.PHPExcel.IOFactory");
        $objPHPExcel=new \PHPExcel;
        $objWriter=new \PHPExcel_Writer_Excel5($objPHPExcel);
        $objWriter=new \PHPExcel_Writer_Excel2007($objPHPExcel);

        //->mergeCells()  合并单元格
        if($user['type']=='cityrun'){
            $objPHPExcel->setActiveSheetIndex(0)
                // ->mergeCells('A1:B1:C1:D1:E1:F1')
                ->setCellValue('A1', '数据监测统计表');
        }else{
            $objPHPExcel->setActiveSheetIndex(0)
                // ->mergeCells('A1:B1:C1:D1:E1:F1')
                ->setCellValue('A1', '数据监测统计表');
        }

        $i+=1;
        $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, '状态');
        $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, '浓度');
        $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, '颗粒物');
        $objPHPExcel->getActiveSheet()->setCellValue('D' . $i, '非甲烷总烃');
        $objPHPExcel->getActiveSheet()->setCellValue('E' . $i, '时间');
        $objPHPExcel->getActiveSheet()->setCellValue('G' . $i, '超标状态');
        foreach($standar as $k=>$v) {
            $i++;
            $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $v['state']);
            $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $v['ywh']);
            $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $v['pm']);
            $objPHPExcel->getActiveSheet()->setCellValue('D' . $i, $v['nmhc']);
            $objPHPExcel->getActiveSheet()->setCellValue('E' . $i, $v['times']);
            $objPHPExcel->getActiveSheet()->setCellValue('G' . $i, $v['overhaul']);
        }
        
        $objPHPExcel->getActiveSheet()->setTitle('user');
        $objPHPExcel->setActiveSheetIndex(0);
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        $PHPWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel,"Excel2007");
        $a3 =date('m',time());
        header('Content-Disposition: attachment;filename="' . $a3 . '月份编号'. $device_find['code'] .'.xlsx');
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        $PHPWriter->save("php://output");
    }
}

 

有其他问题可加我QQ:3053916151

PHPExcel下载地址:https://codeload.github.com/PHPOffice/PHPExcel/zip/1.8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值