PHP 下載mysql數據到PHPExcel表格

第一步:先到官網(https://github.com/PHPOffice/PHPExcel)下載PHPExcelphp

 

第二步:放到第三方庫git

 

第三步:github

 /**
     * 封裝:信息導出
     * @param $day
     * @param string $tableName
     * @throws PHPExcel_Exception
     * @throws PHPExcel_Reader_Exception
     */
    public function Db2Eexcel($data, $tableName = "用戶支付數據"){

        vendor("PHPExcel.PHPExcel");

        // 1. 實例化工做簿
        $excel = new \PHPExcel();

        // 2. 獲得前當活動工做表
        $sheet = $excel->getActiveSheet();

        // 3. Excel表格式,這裏簡略寫了14列
        $letter = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q'];

        // 3.1 表頭數組
        $tableheader = ['ID','訂單建立時間','訂單處理時間','支付平臺單號','商戶訂單號','支付類型','支付金額','實際支付金額','銀行卡','商品名稱','支付狀態','遊戲支付狀態','帳號','服務器ID','渠道','子渠道','遊戲ID'];

        // 3.2 填充表頭信息, 並設置樣式
        for($i = 0;$i < count($tableheader);$i++) {
            $sheet->getCell("$letter[$i]1")->setValue("$tableheader[$i]");
            $sheet->getStyle("$letter[$i]1")->getAlignment()->setHorizontal('center');    // 統一設置水平居中
            $sheet->getStyle("$letter[$i]1")->getAlignment()->setVertical('center');      // 統一設置垂直居中
            $sheet->getStyle("$letter[$i]1")->getFont()->getColor()->setRGB('b5211a');    // 統一設置單元格字段顏色
            $sheet->getStyle("$letter[$i]1")->getFont()->setSize(10);                     // 統一設置字體大小
            $sheet->getStyle("$letter[$i]")->getFont()->setSize(10);
            $sheet->getStyle("$letter[$i]1")->getFont()->setBold(true);                   // 統一設置加粗
            $sheet->getColumnDimension("$letter[$i]")->setWidth(20);                      // 統一設置寬度
        }

        // 3.3 樣式:第1行的高度
        $sheet->getRowDimension('1')->setRowHeight(30);

        // 3.4 樣式:列的寬度
        $sheet->getColumnDimension('A')->setWidth(10);
        $sheet->getColumnDimension('B')->setWidth(20);
        $sheet->getColumnDimension('C')->setWidth(20);
        $sheet->getColumnDimension('D')->setWidth(30);
        $sheet->getColumnDimension('E')->setWidth(30);
        $sheet->getColumnDimension('F')->setWidth(10);
        $sheet->getColumnDimension('G')->setWidth(10);
        $sheet->getColumnDimension('H')->setWidth(15);
        $sheet->getColumnDimension('I')->setWidth(10);
        $sheet->getColumnDimension('J')->setWidth(10);
        $sheet->getColumnDimension('K')->setWidth(10);
        $sheet->getColumnDimension('L')->setWidth(15);
        $sheet->getColumnDimension('M')->setWidth(10);
        $sheet->getColumnDimension('N')->setWidth(10);
        $sheet->getColumnDimension('O')->setWidth(10);
        $sheet->getColumnDimension('P')->setWidth(10);
        $sheet->getColumnDimension('Q')->setWidth(20);

        // 4. 填充表格信息
        for ($i = 2, $k = 0; $i <= count($data)+1; $i++, $k++) {
            $j = 0;

            // 格式化:時間
            if(!empty($data[$k]['ftime'])){
                $data[$k]['ftime'] = date('Y/m/d H:i:s', $data[$k]['ftime']);
            }
            if(!empty($data[$k]['ptime'])){
                $data[$k]['ptime'] = date('Y/m/d H:i:s', $data[$k]['ptime']);
            }

            // 格式化:支付類型 1:支付寶 2:微信
            if(!empty($data[$k]['paytype'])){
                if($data[$k]['paytype'] == 1){
                    $data[$k]['paytype'] = "支付寶";
                }
                if($data[$k]['paytype'] == 2){
                    $data[$k]['paytype'] = "微信";
                }
            }

            //格式化:支付狀態1成功0失敗
            if(isset($data[$k]['paystatus']))
            {
                $data[$k]['paystatus'] = $data[$k]['paystatus'] == 1 ? "成功" : "失敗";
            }
            if(isset($data[$k]['gamepaystatus']))
            {
                $data[$k]['gamepaystatus'] = $data[$k]['gamepaystatus'] == 1 ? "成功" : "失敗";
            }

            foreach ($data[$i - 2] as $key=>$value) {
                $sheet->getCell("$letter[$j]$i")->setValue("$value");
                $sheet->getStyle("$letter[$j]$i")->getAlignment()->setHorizontal('center');
                $j++;
            }
        }

        // 6. 保存文件:輸出到瀏覽器
        $writer = \PHPExcel_IOFactory::createWriter($excel,'Excel2007');
        self::browser_export('Excel2007', $tableName.'.xlsx');    //輸出到瀏覽器
        $writer->save("php://output");
    }

    /**
     * 輸出到瀏覽器
     * @param $type
     * @param $filename
     */
    function browser_export($type,$filename){
        if($type=="Excel5"){
            header('Content-Type: application/vnd.ms-excel');//告訴瀏覽器將要輸出excel03文件
        }else{
            header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;');//告訴瀏覽器數據excel07文件
        }
        ob_end_clean();//清除緩存區,避免亂碼
        header('Content-Disposition: attachment;filename="'.$filename.'"'); //告訴瀏覽器將輸出文件的名稱
        header('Cache-Control: max-age=0');                                 //禁止緩存
    }
相關文章
相關標籤/搜索