php導(dǎo)出Excel包含圖片

導(dǎo)出excel,圖片地址不能用遠程地址,必須下載到本地,用本地地址

public static function exportExcelNewImg($fileName, $headArr, $data, $m_exportType = "Excel2007")
    {
        if (is_array($headArr) && is_array($data) && !empty($fileName)) {
            require_once("Excel/PHPExcel.php");
            require_once("Excel/PHPExcel/CachedObjectStorageFactory.php");
            $cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_in_memory;
            PHPExcel_Settings::setCacheStorageMethod($cacheMethod);
            //創(chuàng)建新的PHPExcel對象
            $objPHPExcel = new PHPExcel();
            $objProps    = $objPHPExcel->getProperties();
            //
            //設(shè)置表頭
            $fixkey = $key = ord("A");
            $prefix = '';


            foreach ($headArr as $v) {
                $colum = chr($key);
                $objPHPExcel->setActiveSheetIndex(0)->setCellValue($prefix . $colum . '1', $v);
                $objPHPExcel->getActiveSheet()->getStyle($prefix . $colum)->getAlignment()->setWrapText(true); // 設(shè)置單元格換行(不是自動換行 內(nèi)容中有\(zhòng)n才會換行)
                $objPHPExcel->getActiveSheet()->getColumnDimension($prefix . $colum)->setAutoSize(true); // 設(shè)置單元格自動調(diào)整寬度
                if ($colum == 'Z') {
                    $key    = ord("@");
                    $prefix = chr($fixkey);
                    $fixkey++;
                }
                $key += 1;
            }
            $column      = 2;
            $objActSheet = $objPHPExcel->getActiveSheet();

            foreach ($data as $key => $rows) { //行寫入
                $fixkey = $span = ord("A");
                $prefix = '';

                /*設(shè)置表格寬度*/
                $objActSheet->getColumnDimension('R')->setWidth(100)->setAutoSize(false);

                foreach ($rows as $keyName => $value) {// 列寫入
                    $j = chr($span);
                    if (isset($value['image']) && is_array($value['image']) && !empty($value['image'])) {
                        /*設(shè)置表格高度*/
                        $objActSheet->getRowDimension( $column)->setRowHeight(180);

                        foreach ($value['image'] as $n => $img) {
                            $img = "http:{$img}";
//                          $img = "http://image.xidibuy.com/image/image.ba57b3db04a9456b082a02bbf938fc8e3d9fae2ec039f7613500842dd515aa3d.jpeg/720x1280/180";
                            $temp_pic = self::download($img, UPLOAD_PATH . '/tmp/');
                            $local_pic_path = './upload/tmp/' . $temp_pic;
                            if (file_exists($local_pic_path)) {
                                //                            圖片字段
                                $objDrawing = new PHPExcel_Worksheet_Drawing();

                                /*設(shè)置圖片路徑*/
                                $objDrawing->setPath($local_pic_path);
                                /*設(shè)置圖片寬度*/
                                $objDrawing->setWidth(180);//寫入圖片寬度
                                /*設(shè)置圖片高度*/
                                $objDrawing->setHeight(180);
//                                $objDrawing->getShadow()->setVisible(true);
//                                $objDrawing->getShadow()->setDirection(50);
                                /*設(shè)置圖片所在單元格的格式*/
                                $objDrawing->setOffsetX($n*200);
                                /*設(shè)置圖片要插入的單元格*/
//                                echo $prefix . $j . $column;die();
                                $objDrawing->setCoordinates($prefix . $j . $column);
                                $objDrawing->setWorksheet($objActSheet);
                            } else {
//                                echo $local_pic_path;
//                                die('文件不存在');
                                $objActSheet->setCellValueExplicit($prefix . $j . $column, '無圖片');
                            }
                        }
                    } else {
                        $objActSheet->setCellValueExplicit($prefix . $j . $column, $value);
                    }
                    if ($j == 'Z') {
                        $span   = ord("@");
                        $prefix = chr($fixkey);
                        $fixkey++;
                    }
                    $span++;
                }
                $column++;
            }
            //設(shè)置活動單指數(shù)到第一個表,所以Excel打開這是第一個表
            $objPHPExcel->setActiveSheetIndex(0);

            if ($m_exportType == "Excel2007") {
                //將輸出重定向到一個客戶端web瀏覽器(Excel2007)
                header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
                header("Content-Disposition: attachment; filename=\"$fileName\"");
                header('Cache-Control: max-age=0');
                $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
                $objWriter->save('php://output'); //文件通過瀏覽器下載
            } elseif ($m_exportType == "Excel5") {
                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');
            }
        } else {
            return FALSE;
        }
    }
public static function download($url,$path='images/')
    {
        $ch = curl_init();
        curl_setopt($ch,CURLOPT_URL,$url);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,30);
        curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);//信任任何證書
        $file = curl_exec($ch);
        curl_close($ch);
        $url = preg_replace('/\/\d+x\d+\/\d+/', '', $url);
        $filename = pathinfo($url,PATHINFO_BASENAME);
        $resource = fopen($path.$filename,'a');
        fwrite($resource, $file);
        fclose($resource);
        return $filename;
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容