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('導出失敗');

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM