美文网首页编什么程
phpexcel 导出xlsx文件

phpexcel 导出xlsx文件

作者: 沙蒿同学 | 来源:发表于2018-12-26 20:12 被阅读0次

    以下封装的一个函数,activity_info的是数据,$xslx 是文件属性

    <?php
      /**
             * $activity_info = [
             *      {
                        "content"   =>[
             *              {标题1,标题2,标题3,标题4},
             *              {内容1,内容2,内容3,内容4}
             *          ]
             *          "title"     => 'sheet命名'
             *      },
             *      {
                        "content"   =>[
             *              {标题1,标题2,标题3,标题4},
             *              {内容1,内容2,内容3,内容4}
             *          ]
             *          "title"     => 'sheet命名'
             *      },
             * ];
             */
      /**
         * @param array $activity_info
         * @param array $xslx
         */
        public function activityRecordExport($activity_info = array(),$xslx = array()){
    
            $excel = new PHPExcel();
    
            /* @func 设置文档基本属性 */
            $obpe_pro = $excel->getProperties();
            $obpe_pro->setCreator($xslx['seller_nick'])//设置创建者
            ->setLastModifiedBy($xslx['create_time'])//设置时间
            ->setTitle($xslx['title'])//设置标题
            ->setSubject($xslx['remark'])//设置备注
            ->setDescription($xslx['describe'])//设置描述
            ->setKeywords($xslx['keyword'])//设置关键字 | 标记
            ->setCategory($xslx['type']);//设置类别
    
    //        /* 设置宽度 */
    //        $obpe_pro->getActiveSheet()->getColumnDimension()->setAutoSize(true);
    //        $obpe_pro->getActiveSheet()->getColumnDimension('B')->setWidth(10);
    //        $obpe_pro->getActiveSheet()->getDefaultRowDimension()->setRowHeight(30);
            //设置当前sheet索引,用于后续的内容操作
            //一般用在对个Sheet的时候才需要显示调用
            //缺省情况下,PHPExcel会自动创建第一个SHEET被设置SheetIndex=0
            //设置SHEET
    
            $cellKey = [
                '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'
            ];
            //print_r($activity_info);exit(0);
            foreach ($activity_info as $key_sheet => $value_sheet){
    
                $excel->createSheet();
                $excel->setactivesheetindex($key_sheet);
    
                $excel->getActiveSheet()->setTitle($value_sheet['tittle']);
                foreach($value_sheet['content'] as $key_column => $value){
                    $count = count($value);
                    $key_column = $key_column + 1;
                    /* @func 设置列 */
                    for ($i = 0;$i < $count; $i++){
                        $excel->getActiveSheet()->getColumnDimension($cellKey[$i])->setAutoSize(true);
                        $excel->getActiveSheet()->getStyle($cellKey[$i])->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY);//水平方向上两端对齐
                        $excel->getActiveSheet()->getStyle( $cellKey[$i])->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);       //垂直方向上中间居中
                        $excel->getactivesheet()->setcellvalue($cellKey[$i].$key_column, $value[$i]);
                    }
                }
            }
            $excel->setActiveSheetIndex(0);
            header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
            header('Content-Disposition: attachment;filename="'.$xslx['title'].'.xlsx"');
            header('Cache-Control: max-age=0');
            header('Cache-Control: max-age=1');
            header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
            header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified
            header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1
            header ('Pragma: public'); // HTTP/1.0
    
            $objWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel2007');
            $objWriter->save('php://output');
            exit(0);
    ?>
    

    原文作者:------ 沙蒿 ------
    关注我吧《程序员的碎碎念》作者,不会ui的前端不是好后端
    不忘初心,牢记使命,对于文章内容有疑问的或者深入交流学习的朋友可以加我微信:2283743369

    相关文章

      网友评论

        本文标题:phpexcel 导出xlsx文件

        本文链接:https://www.haomeiwen.com/subject/lfyklqtx.html