zoukankan      html  css  js  c++  java
  • PHP 之tp5导出到Excel并下载

    一、代码

        public function export($month)
        {
            $year = date("Y", time());
            //要导出的数据
            $data =array();
            $day_number = date("t", strtotime($year."-".$month));
    
            vendor('PHPExcel.PHPExcel');
            ini_set('max_execution_time', 0);
    
            $objPHPExcel = new PHPExcel();
            //设置excel列名
            $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', '姓名');
            $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B1', '午餐');
            $objPHPExcel->setActiveSheetIndex(0)->setCellValue('C1', '晚餐');
            $objPHPExcel->setActiveSheetIndex(0)->setCellValue('D1', '总数');
    
            //设置列宽度
            $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10);
            $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(10);
            $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(10);
            $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(10);
    
            for($i = 1; $i <= $day_number; $i++){
                $objPHPExcel->setActiveSheetIndex(0)->setCellValue($this->cell[$i+3].'1', $i.'日');
                $objPHPExcel->getActiveSheet()->getColumnDimension($this->cell[$i+3])->setWidth(20);
            }
            //设置第一行高度
            $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(20);
    
            //垂直居中,
            $objPHPExcel->getActiveSheet()->getStyle('A2:A'.(count($data)+1))->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
            //水平居左
            $objPHPExcel->getActiveSheet()->getStyle('A2:A'.(count($data)+1))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
            //垂直居中
            $objPHPExcel->getActiveSheet()->getStyle('B2:B'.(count($data)+1))->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
            $objPHPExcel->getActiveSheet()->getStyle('B2:B'.(count($data)+1))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
            $objPHPExcel->getActiveSheet()->getStyle('C2:C'.(count($data)+1))->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
            $objPHPExcel->getActiveSheet()->getStyle('C2:C'.(count($data)+1))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
            $objPHPExcel->getActiveSheet()->getStyle('D2:D'.(count($data)+1))->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
            $objPHPExcel->getActiveSheet()->getStyle('D2:D'.(count($data)+1))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
            foreach ($data as $k => $v){
                //获取午餐总次数,这里获取数据
                $zhong_count = 0;
                //获取晚餐次数,这里获取数据
                $wan_count = 0;
                $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A' . ($k + 2), $v['name']);
                $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B' . ($k + 2), $zhong_count);
                $objPHPExcel->setActiveSheetIndex(0)->setCellValue('C' . ($k + 2), $wan_count);
                $objPHPExcel->setActiveSheetIndex(0)->setCellValue('D' . ($k + 2), $zhong_count + $wan_count);
                for($i = 1; $i <= $day_number; $i++){
                    //设置换行
                    $objPHPExcel->getActiveSheet()->getStyle($this->cell[$i+3])->getAlignment()->setWrapText(true);
                    $food_ = Model("qyweixin_food")->where("year='$year' and month='$month' and user_id='{$v['userid']}' and day='$i'")->find();
                    $objPHPExcel->setActiveSheetIndex(0)->setCellValue($this->cell[$i+3].($k+2), "午:".$food_['zhong'].PHP_EOL."晚:".$food_['wan']);
    
                    $objPHPExcel->getActiveSheet()->getStyle($this->cell[$i+3].'2:'.$this->cell[$i+3].(count($data)+1))->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
                }
                $objPHPExcel->getActiveSheet()->getRowDimension($k+2)->setRowHeight(40);
            }
    
            $title = $year.'年'.$month.'月报餐统计表';
            $objPHPExcel->getActiveSheet()->setTitle($title);
            $objPHPExcel->setActiveSheetIndex(0);
            header('Content-Type: application/vnd.ms-excel');
            header("Content-Disposition: attachment;filename=$title.xls");
            header('Cache-Control: max-age=0');
            $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
            $objWriter->save('php://output');
        }
  • 相关阅读:
    如何使用数据卷在宿主机和docker容器之间共享文件
    Debian 7 安装 Docker
    ajax简单封装
    GridView列的排序功能
    SqlHelper帮助类
    模板引擎小例子
    WCF练习小程序总结
    热线接口开发调试工作记录
    在Oracle中使用rank()over()排名的问题
    项目实施中出现的问题点汇总
  • 原文地址:https://www.cnblogs.com/yang-2018/p/15341494.html
Copyright © 2011-2022 走看看