php保存數據庫數據到excel,導出圖片到excel

/**
     * 保存所有審覈數據到excel,包括圖片數據
     * @param $data 需要保存的數據
     */
    public function saveExcel($data)
    {
        //var_dump($data);
        //die;
        header("Content-Type:text/html;charset=utf-8");
        error_reporting(E_ALL);
        ini_set('display_errors', TRUE);
        ini_set('display_startup_errors', TRUE);

        //Excel表格式,
        $letter = 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');
        //表頭數組
        $tableheader = array('任務id', '截圖id', '用戶id', '提交任務信息', '創建時間', '任務標題', '審覈狀態', '提交審覈圖片',);

        //創建對象
        $excel = new \PHPExcel();
        //填充表頭信息'
        $excel->getActiveSheet()->setTitle('截圖任務審覈');
        //刪除原有的文件目錄
        $this->delFileUnderDir(APP_PATH . '/temp/image/');
        for ($i = 0; $i < count($tableheader); $i++) {
            $excel->getActiveSheet()->setCellValue("$letter[$i]1", "$tableheader[$i]");
        }
        $data = json_decode(json_encode($data), true);
        //填充表格信息
        $objSheet = $excel->getActiveSheet();
        $objSheet->getColumnDimension('H')->setWidth(70);//設置默認列寬
        $objSheet->getColumnDimension('I')->setWidth(70);//設置默認列寬
        $objSheet->getColumnDimension('J')->setWidth(70);//設置默認列寬
        $objSheet->getColumnDimension('K')->setWidth(70);//設置默認列寬
        for ($i = 2; $i <= count($data) + 1; $i++) {
            $j = 0;
            foreach ($data[$i - 2] as $key => $value) {
                if (gettype($value) == 'array') {
                    foreach ($value as $k => $v) {
                        $img = self::curlGet($v);
                        $dir = APP_PATH . '/temp/image/';
                        $file_info = pathinfo($v);
                        if (!empty($file_info['basename'])) { //過濾非文件類型
                            $basename = $file_info['basename'];
                            is_dir($dir) OR mkdir($dir, 0777, true); //進行檢測文件是否存在
                            file_put_contents($dir . $basename, $img);
                            $objDrawing = new \PHPExcel_Worksheet_Drawing();
                            $objDrawing->setPath($dir . $basename);
                            $objSheet->getRowDimension($i)->setRowHeight(400);//設置默認行高
                            //$objDrawing->setWidth(400); //照片寬度
                            $objDrawing->setHeight(400); //照片高度
                            // var_dump($letter[$j+$k].$i);die;
                            $objDrawing->setCoordinates($letter[$j + $k] . $i); //設置圖片要插入的單元格
                            $objDrawing->setOffsetX(12); // 圖片偏移距離
                            $objDrawing->setOffsetY(12);
                            $objDrawing->setWorksheet($objSheet);
                        } else {
                            $excel->getActiveSheet()->setCellValue("$letter[$j]$i", " ");
                        }
                    }
                } else {
                    $excel->getActiveSheet()->setCellValue("$letter[$j]$i", "$value");
                }
                $j++;
            }
        }
        //創建Excel輸入對象
        ob_end_clean();
        $objWriter = new \PHPExcel_Writer_Excel5($excel);
        header("Pragma: public");
        header("Expires: 0");
        header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
        header("Content-Type:application/force-download");
        header("Content-Type:application/vnd.ms-execl");
        header("Content-Type:application/octet-stream");
        header("Content-Type:application/download");
        //多瀏覽器下兼容中文標題
        $fileName = '任務截圖審覈_user_mission_mapping_' . date("Y-m-d-h-i-s", time());
        $encoded_filename = urlencode($fileName);
        $ua = $_SERVER["HTTP_USER_AGENT"];
        if (preg_match("/MSIE/", $ua)) {
            header('Content-Disposition: attachment; filename="' . $encoded_filename . '.xls"');
        } else if (preg_match("/Firefox/", $ua)) {
            header('Content-Disposition: attachment; filename*="utf8\'\'' . $fileName . '.csv"');
        } else {
            header('Content-Disposition: attachment; filename="' . $fileName . '.csv"');
        }
        header("Content-Transfer-Encoding:binary");
        $objWriter->save('php://output');
    }
       public static function curlGet($url)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 這個是重點 請求https。
        $data = curl_exec($ch);
        curl_close($ch);
//        $data = json_decode($data, true);
        return $data;
    }

    /**
     * 刪除一個目錄下的所有文件
     * @param $dirName
     */
    public function delFileUnderDir($dirName)
    {
        if ($handle = opendir("$dirName")) {
            while (false !== ($item = readdir($handle))) {
                if ($item != "." && $item != "..") {
                    if (is_dir("$dirName/$item")) {
                        $this->delFileUnderDir("$dirName/$item");
                    } else {
                        unlink("$dirName/$item");
                    }
                }
            }
            closedir($handle);
        }
    }

僅僅導出數據

   public function downLoadExcel($data)
    {
        import('PHPExcel.PHPExcel', EXTEND_PATH);
        header("Content-Type:text/html;charset=utf-8");
        error_reporting(E_ALL);
        ini_set('display_errors', TRUE);
        ini_set('display_startup_errors', TRUE);

        $letter = 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');
        //表頭數組
        $tableheader = array('日期', '註冊人數',);

        $excel = new \PHPExcel();
        //填充表頭信息'
        $excel->getActiveSheet()->setTitle('用戶註冊統計');
        for ($i = 0; $i < count($tableheader); $i++) {
            $excel->getActiveSheet()->setCellValue("$letter[$i]1", "$tableheader[$i]");
        }
        $data = json_decode(json_encode($data), true);
        //填充表格信息
        $objSheet = $excel->getActiveSheet();
        $objSheet->getColumnDimension('A')->setWidth(50);
        $objSheet->getColumnDimension('B')->setWidth(50);
        for ($i = 2; $i <= count($data) + 1; $i++) {
            $j = 0;
            foreach ($data[$i - 2] as $key => $value) {
                $excel->getActiveSheet()->setCellValue("$letter[$j]$i", "$value");
                $j++;
            }
        }
        //創建Excel輸入對象
        ob_end_clean();
        $objWriter = new \PHPExcel_Writer_Excel5($excel);
        header("Pragma: public");
        header("Expires: 0");
        header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
        header("Content-Type:application/force-download");
        header("Content-Type:application/vnd.ms-execl");
        header("Content-Type:application/octet-stream");
        header("Content-Type:application/download");
        //多瀏覽器下兼容中文標題
        $fileName = '用戶統計' . date("Y-m-d-h-i-s", time());
        $encoded_filename = urlencode($fileName);
        $ua = $_SERVER["HTTP_USER_AGENT"];
        if (preg_match("/MSIE/", $ua)) {
            header('Content-Disposition: attachment; filename="' . $encoded_filename . '.xls"');
        } else if (preg_match("/Firefox/", $ua)) {
            header('Content-Disposition: attachment; filename*="utf8\'\'' . $fileName . '.csv"');
        } else {
            header('Content-Disposition: attachment; filename="' . $fileName . '.csv"');
        }
        header("Content-Transfer-Encoding:binary");
        $objWriter->save('php://output');
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章