Yii2 框架 导出excel表格类

时间:2020-05-28
本文章向大家介绍Yii2 框架 导出excel表格类,主要包括Yii2 框架 导出excel表格类使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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

导出excel类:

<?php

/*
    * 导出表格
*/
namespace common\utils;

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('导出失败');

原文地址:https://www.cnblogs.com/jackzhuo/p/12980229.html