zoukankan      html  css  js  c++  java
  • Yii2 框架 导出excel表格类

    使用这个类前,需安装PHPExcel库,安装教程可参考:https://www.cnblogs.com/JahanGu/p/8039021.html

    导出excel类:

    <?php
    
    /*
        * 导出表格
    */
    namespace commonutils;
    
    class OutputExecl
    {
    
        /*
            * 导出execl
            * headerData  表头信息  形如 array('A1'=>'编号','B1'=>'会员ID','C1'=>'电话');
            * data        导入数据   这个要与表头顺序一致
            * 返回一个execl下载地址
        */    
    
        public function output($headData,$data,$filename='')
        {
            $objPHPExcel = new PHPExcel();
    
            //设置表头的信息
            $headObj = $objPHPExcel->setActiveSheetIndex(0);            
            foreach($headData as $key=>$val)
            {
                $headObj->setCellValue($key,$val);
            }
            $i=2;
    
            //写入数据
            $contentObj = $objPHPExcel->getActiveSheet();
            $listks    = 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');
            foreach ($data as $key => $value) 
            {
                $l = 0;
                foreach($value as $val)
                {
                    //给表的单元格设置数据
                    $contentObj->setCellValue($listks[$l].$i,$val);
                    $l++;
                }
                $i++;
            }        
    
            //设置sheet页标题
            $objPHPExcel->getActiveSheet()->setTitle('表格导出数据');
    
            $objPHPExcel->setActiveSheetIndex(0);
    
            if(!$filename)
                $filename = time().rand(1000,9999).'.xls';
    
    
            $dir = '/data/execl/';
            $basePath = $_SERVER['DOCUMENT_ROOT'];
            if(!is_dir($basePath.$dir)) mkdir($basePath.$dir,0777,true);
    
            $dirFile = $dir.$filename;
            //1,直接生成一个文件
            $objWriter =PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
            $objWriter->save( $basePath.$dirFile);
            $host = Yii::$app->request->hostInfo;
              return $host.$dirFile;       
        }
    
    }

    调用:

            //组织导出数据
            $exportData = array();
            foreach($list as $val)
            {
    
                $temp = [];
                $temp[] = $val['member_id'];
                $temp[] = $val['member_name'];
                $temp[] = $val['member_mobile'];
                $temp[] = $val['state']?'正常':'冻结';
                $temp[] = date("Y-m-d H:i:s",$val['create_time']);
                $exportData[] = $temp;
            }
            $headData = array('A1'=>'会员ID','B1'=>'会员姓名','C1'=>'会员电话','D1'=>'会员状态','E1'=>'注册时间');
            $fileName = 'member-'.date('Y-m-d').'.xls';
            $execlObj = new OutputExecl();
            $res = $execlObj->output($headData,$exportData,$fileName);
            if($res)
                $this->out('下载地址',array('url'=>$res));
            else
                $this->error('导出失败');
  • 相关阅读:
    使用 requests 维持会话
    使用 requests 发送 POST 请求
    使用 requests 发送 GET 请求
    requests 安装
    使用 urllib 分析 Robots 协议
    使用 urllib 解析 URL 链接
    使用 urllib 处理 HTTP 异常
    使用 urllib 处理 Cookies 信息
    使用 urllib 设置代理服务
    按单生产程序发布
  • 原文地址:https://www.cnblogs.com/jackzhuo/p/12980229.html
Copyright © 2011-2022 走看看