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');
        }
  • 相关阅读:
    Lync 2013和Exchange 2013集成
    eclise配置tomcat出现服务Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4 and Java EE 5 Web modules
    二叉树C语言
    NYOJ 298 相变点(矩阵高速功率)
    简化网站开发:SiteMesh小工具
    Android Ant 和 Gradle 包装工艺和效率控制
    [Webpack 2] Chunking common modules from multiple apps with the Webpack CommonsChunkPlugin
    [Webpack 2] Grouping vendor files with the Webpack CommonsChunkPlugin
    [Webpack 2] Hashing with Webpack for long term caching
    [Webpack 2] Maintain sane file sizes with webpack code splitting
  • 原文地址:https://www.cnblogs.com/yang-2018/p/15341494.html
Copyright © 2011-2022 走看看