login每天学习一点点,每天进步一点点.
当前位置:首页 >> PHPExecl

PHPExecl

2018-05-03 21:17:10  |  分类: Php |  标签: 阅读(199)评论(0)
    public function xls(){
        //表格数组  
        $ddd = Sois::
        // with(['sort'=>function($rs){$rs->with(['info']);}])
        // ->
        whereTime('date_shipped','last month')
        ->field('sn,si,so,mn,date_shipped,qty,qty_ship,list_price,ar_ship,comments')
        ->select();
        $data  = collection($ddd)->toArray();
        $shuju = count($data);
        // dump($data);

        // 实例化
        $excel = new PHPExcel();
        $excel->getActiveSheet()->setTitle('月度发货明细表');    //设置工作簿名称
        $excel->getDefaultStyle()->getFont()->setSize(9);    //设置全局字体大小
        $excel->getActiveSheet()->getStyle("A1")->getFont()->setSize(18)->setBold(true);  
        $excel->getActiveSheet()->setCellValue("A1","月度发货明细表");
        //合并单元格
        $excel->getActiveSheet()->mergeCells('A1:J1');
        //设置水平居中
        $excel->getActiveSheet()->getStyle('A1:J2')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $excel->getActiveSheet()->getStyle('A3:C'.(count($data)+1))->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $excel->getActiveSheet()->getStyle('F3:I'.(count($data)+1))->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        //设置垂直居中
        $excel->getActiveSheet()->getStyle('A1:J2')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
        //设置表头字体,加粗,背景颜色 FF或00填充
        $excel->getActiveSheet()->getStyle("A2:J2")->getFont()->setSize(9);
        $excel->getActiveSheet()->getStyle('A2:J2')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
        $excel->getActiveSheet()->getStyle('A2:J2')->getFill()->getStartColor()->setARGB('FFC6C3C6');
        //设置列宽
        $excel->getActiveSheet()->getColumnDimension('A')->setWidth('10');//发货单号
        $excel->getActiveSheet()->getColumnDimension('B')->setWidth('4');//项号
        $excel->getActiveSheet()->getColumnDimension('C')->setWidth('8.6');//销售单号
        $excel->getActiveSheet()->getColumnDimension('D')->setWidth('13.6');//型号
        $excel->getActiveSheet()->getColumnDimension('E')->setWidth('10');//发货时间
        $excel->getActiveSheet()->getColumnDimension('F')->setWidth('5.11');//订单数量
        $excel->getActiveSheet()->getColumnDimension('G')->setWidth('5.11');//本次发货
        $excel->getActiveSheet()->getColumnDimension('H')->setWidth('7.5');//单价
        $excel->getActiveSheet()->getColumnDimension('I')->setWidth('7.5');//总价
        $excel->getActiveSheet()->getColumnDimension('J')->setWidth('36');//订单备注
        //宽度不够,自动换行
        $excel->getActiveSheet()->getStyle('F2:G2')->getAlignment()->setWrapText(true);
        //设置边框
        $excel->getActiveSheet()->getStyle('A1:J'.(count($data)+1))->getBorders()->getAllBorders()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
        // $excel->getActiveSheet()->getStyle('B5')->getAlignment()->setShrinkToFit(true);
        $letter = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ');  
        //设置表头
        // $tabletitle  = 
        //表头数组
        $tableheader = array('发货单号','项号','销售单号','型号','发货时间','订单数量','本次发货','单价','总价','订单备注');  
        //填充table信息
        foreach ($tableheader as $key => $value) {
            $excel->getActiveSheet()->setCellValue("$letter[$key]2","$tableheader[$key]");
        }
        //填充表格信息  
        for ($i = 3;$i <= $shuju + 1;$i++) {  
            //先计算有多少条数据,从第3行从左往右填充数据,
            $j = 0;
            foreach ($data[$i - 3] as $key=>$value) {  
                //从data的第一条数据开始进行填充
                $excel->getActiveSheet()->setCellValue("$letter[$j]$i","$value");  
                //填充完数据自动到下一行
                $j++;  
            }  
            
        }
        $ii     = $shuju+2;
        $qiuhe  = $shuju+1;
        // dump($qiuhe);
        $excel->getActiveSheet()->setCellValue("$letter[4]$ii","合计:");  
        //订单数量求和
        $excel->getActiveSheet()->setCellValue("$letter[5]$ii","=SUM(F3:F".$qiuhe.")");  
        //发货数量求和
        $excel->getActiveSheet()->setCellValue("$letter[6]$ii","=SUM(G3:G".$qiuhe.")");  
        //总价求和
        $excel->getActiveSheet()->setCellValue("$letter[8]$ii","=SUM(I3:I".$qiuhe.')&"元"');  

        //冻结表头
        // $excel->getActiveSheet()->freezePane('L3');

        $write = new PHPExcel_Writer_Excel5($excel);  
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header('Content-Disposition: attachment;filename="links_out_'.time().'_.xlsx"');
        header('Cache-Control: max-age=0');
        $write->save('php://output');
        exit; 
    }


上一篇:ubuntu使用nmap查询端口 下一篇:ThinkPHP5 的视图$view->fetch()和$view->display()的区别

猜你喜欢

发表评论:

0.142348s