• 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('导出失败');
  • 相关阅读:
    精讲响应式WebClient第6篇-请求失败自动重试机制,强烈建议你看一看
    dubbo实战之三:使用Zookeeper注册中心
    dubbo实战之二:与SpringBoot集成
    dubbo实战之一:准备和初体验
    树莓派4B安装官方Ubuntu20 Server版(64位)
    JUnit5学习之八:综合进阶(终篇)
    纯函数
    函数式编程基本概念
    vscod使用指南
    实际使用Elasticdump工具对Elasticsearch集群进行数据备份和数据还原
  • 原文地址:https://www.cnblogs.com/jackzhuo/p/12980229.html
Copyright © 2020-2023  润新知