thinkPHP excel 導出

  1. 下載PHPExcel,放到指定路徑下;
  2. 查詢數據庫數據,導出;
    /*全部導出數據方法*/
    public function allExp()
    {
        $bgdate = htmlspecialchars($_POST['bgdate']);
        $enddate = htmlspecialchars($_POST['enddate']);
        $map = 'create_time > '.strtotime($bgdate).' and create_time <'.(strtotime($enddate) + 86400);

        //鏈接所導出的數據表
        $xlsModel = D('Bi');
        //“bilibili,mobile,create_time”爲所查詢的字段,“”查詢條件
        $mobile_list  = $xlsModel->field('mobile,create_time')->where($map)->select();

        $count=1;//導出Excel序號排列

        $data = array();
        //循環查詢後的數據,進行每一列
        foreach ($mobile_list as $k=>$mobile_info){
            $data[$k][ID] = $count++;//序號列
            $data[$k][mobile] = $mobile_info['mobile'];//名稱列
            $data[$k][create_time] = date("Y-m-d H:i:s",$mobile_info['create_time']);//地址列
        }

        //每列表的名稱
        foreach ($data as $field=>$v){
            if($field == 'ID'){
                $headArr[]='序號';
            }

            if($field == 'mobile'){
                $headArr[]='電話';
            }

            if($field == 'create_time'){
                $headArr[]='創建時間';
            }
        }

        $filename="bi活動電話信息數據表";//所導出的保存文件名稱
        $sss=$this->getExcel($filename,$headArr,$data);//調用導出引用方法


    }

    /*導出引用方法*/
    public  function getExcel($fileName,$headArr,$data)
    {
        //導入PHPExcel類庫,因爲PHPExcel沒有用命名空間,只能inport導入
        //import("Org.Util.PHPExcel");
        //import("Org.Util.PHPExcel.Writer.Excel5");
        //import("Org.Util.PHPExcel.IOFactory.php");
        include_once BASE_PATH . '/ThinkPHP/Extend/Vendor/PHPExcel/PHPExcel.php';
        include_once BASE_PATH . '/ThinkPHP/Extend/Vendor/PHPExcel/PHPExcel/Writer/Excel5';
        include_once BASE_PATH . '/ThinkPHP/Extend/Vendor/PHPExcel/PHPExcel/IOFactory.php';

        $date = date("Y_m_d",time());
        $fileName .= "_{$date}.xls";

        //創建PHPExcel對象,注意,不能少了\
        $objPHPExcel = new \PHPExcel();
        $objProps = $objPHPExcel->getProperties();

        //設置表頭
        $key = ord("A");
        //print_r($headArr);exit;
        foreach($headArr as $v){
            $colum = chr($key);
            $objPHPExcel->setActiveSheetIndex(0) ->setCellValue($colum.'1', $v);
            $objPHPExcel->setActiveSheetIndex(0) ->setCellValue($colum.'1', $v);
            $key += 1;
        }

        $column = 2;
        $objActSheet = $objPHPExcel->getActiveSheet();

        //print_r($data);exit;
        foreach($data as $key => $rows){ //行寫入
            $span = ord("A");
            foreach($rows as $keyName=>$value){// 列寫入
                $j = chr($span);
                $objActSheet->setCellValue($j.$column, $value);
                $span++;
            }
            $column++;
        }

        $fileName = iconv("utf-8", "gb2312", $fileName);

        //重命名錶
        //$objPHPExcel->getActiveSheet()->setTitle('test');
        //設置活動單指數到第一個表,所以Excel打開這是第一個表
        $objPHPExcel->setActiveSheetIndex(0);
        ob_end_clean();//清除緩衝區,避免亂碼
        header('Content-Type: application/vnd.ms-excel');
        header("Content-Disposition: attachment;filename=\"$fileName\"");
        header('Cache-Control: max-age=0');

        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        $objWriter->save('php://output'); //文件通過瀏覽器下載
        exit;

    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章