????????之前在項(xiàng)目上有做過(guò)數(shù)據(jù)導(dǎo)出Excel的實(shí)例,最近需要匯出圖片數(shù)據(jù),沒(méi)遇過(guò)這樣的項(xiàng)目,所以在處理成功之際,特此記錄一下,希望可以給有需要的小夥伴一絲靈感!
????????後端控制器方法:
/*導(dǎo)入phpExcel核心類(lèi) */ require_once APP_PATH.'PHPExcel/PHPExcel.php'; require_once APP_PATH.'PHPExcel/PHPExcel/Writer/Excel5.php'; // 用于其他低版本xls require_once APP_PATH.'PHPExcel/PHPExcel/Writer/Excel2007.php'; // 用于 excel-2007 格式 //實(shí)例化PHPExcel類(lèi) $objPHPExcel = new PHPExcel(); $objPHPExcel->createSheet(0); $objPHPExcel->setActiveSheetIndex(0); $currentSheet = $objPHPExcel->getActiveSheet(); // $objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(300);#設(shè)置單元格行高(此方法經(jīng)過(guò)個(gè)人測(cè)試,發(fā)現(xiàn)會(huì)出現(xiàn)excel變形) // 設(shè)置內(nèi)容居中 $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('B')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('C')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('D')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('E')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('F')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('G')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('H')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('I')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('J')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('K')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('L')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('M')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('N')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('O')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('P')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); // 設(shè)置excel寬度 $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth(20); // 設(shè)置頭部單元格注釋信息 $currentSheet->setCellValue('A1', "數(shù)據(jù)1"); $currentSheet->setCellValue('B1', "數(shù)據(jù)2"); $currentSheet->setCellValue('C1', "數(shù)據(jù)3"); $currentSheet->setCellValue('D1', "數(shù)據(jù)4"); $currentSheet->setCellValue('E1', "數(shù)據(jù)5"); $currentSheet->setCellValue('F1', "數(shù)據(jù)6"); $currentSheet->setCellValue('G1', "數(shù)據(jù)7"); $currentSheet->setCellValue('H1', "數(shù)據(jù)8"); $currentSheet->setCellValue('I1', "數(shù)據(jù)9"); $currentSheet->setCellValue('J1', "數(shù)據(jù)10"); $currentSheet->setCellValue('K1', "數(shù)據(jù)11"); $currentSheet->setCellValue('L1', "數(shù)據(jù)12"); $currentSheet->setCellValue('M1', "照片數(shù)據(jù)1"); $currentSheet->setCellValue('N1', "照片數(shù)據(jù)2"); $currentSheet->setCellValue('O1', "照片數(shù)據(jù)3"); $currentSheet->setCellValue('P1', "照片數(shù)據(jù)4"); $idx = 2; //查詢(xún)出數(shù)據(jù)庫(kù)內(nèi)的數(shù)據(jù)信息 //查詢(xún)出所需信息 $searchInfo = M('數(shù)據(jù)表')->select(); //組裝查詢(xún)條件 $year_time_result = 自定義設(shè)置的查詢(xún)條件; $i = 0; foreach ($searchInfo as &$y){ $i++; //設(shè)置數(shù)據(jù)所在單元格 $currentSheet->setCellValue('A' . $idx, 數(shù)據(jù)1); $currentSheet->setCellValue('B' . $idx, 數(shù)據(jù)2); $currentSheet->setCellValue('C' . $idx, 數(shù)據(jù)3); $currentSheet->setCellValue('D' . $idx, 數(shù)據(jù)4); $currentSheet->setCellValue('E' . $idx, 數(shù)據(jù)5); $currentSheet->setCellValue('F' . $idx, 數(shù)據(jù)6); $currentSheet->setCellValue('G' . $idx, 數(shù)據(jù)7); $currentSheet->setCellValue('H' . $idx, 數(shù)據(jù)8); $currentSheet->setCellValue('I' . $idx, 數(shù)據(jù)9); $currentSheet->setCellValue('J' . $idx, 數(shù)據(jù)10); $currentSheet->setCellValue('K' . $idx, 數(shù)據(jù)11); $currentSheet->setCellValue('L' . $idx, 數(shù)據(jù)12); //設(shè)置單元格高度,這個(gè)是重點(diǎn)哦 $currentSheet->getRowDimension($idx) -> setRowHeight(100); //圖片處理類(lèi),這個(gè)才是圖片導(dǎo)出的關(guān)鍵哦 $objDrawing = new PHPExcel_Worksheet_Drawing(); //開(kāi)始設(shè)置圖片 //照片數(shù)據(jù)1 if(!empty(照片數(shù)據(jù)1)){ $objDrawing->setPath(照片數(shù)據(jù)1); // 設(shè)置圖片寬度高度 $objDrawing->setHeight(100);//照片高度 $objDrawing->setWidth(100); //照片寬度 /*設(shè)置圖片要插入的單元格*/ $objDrawing->setCoordinates('M'.$idx); // 圖片偏移距離 $objDrawing->setOffsetX(0); $objDrawing->setOffsetY(0); $objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); } //圖片處理類(lèi),這個(gè)才是圖片導(dǎo)出的關(guān)鍵哦 $objDrawing1 = new PHPExcel_Worksheet_Drawing(); //照片數(shù)據(jù)2 if(!empty(照片數(shù)據(jù)2)){ $objDrawing1->setPath(照片數(shù)據(jù)2); // 設(shè)置圖片寬度高度 $objDrawing1->setHeight(100);//照片高度 $objDrawing1->setWidth(100); //照片寬度 /*設(shè)置圖片要插入的單元格*/ $objDrawing1->setCoordinates('N'.$idx); // 圖片偏移距離 $objDrawing1->setOffsetX(0); $objDrawing1->setOffsetY(0); $objDrawing1->setWorksheet($objPHPExcel->getActiveSheet()); } //圖片處理類(lèi),這個(gè)才是圖片導(dǎo)出的關(guān)鍵哦 $objDrawing2 = new PHPExcel_Worksheet_Drawing(); //照片數(shù)據(jù)3 if(!empty(照片數(shù)據(jù)3)){ $objDrawing2->setPath(照片數(shù)據(jù)3); // 設(shè)置圖片寬度高度 $objDrawing2->setHeight(100);//照片高度 $objDrawing2->setWidth(100); //照片寬度 /*設(shè)置圖片要插入的單元格*/ $objDrawing2->setCoordinates('O'.$idx); // 圖片偏移距離 $objDrawing2->setOffsetX(0); $objDrawing2->setOffsetY(0); $objDrawing2->setWorksheet($objPHPExcel->getActiveSheet()); } //圖片處理類(lèi),這個(gè)才是圖片導(dǎo)出的關(guān)鍵哦 $objDrawing3 = new PHPExcel_Worksheet_Drawing(); //照片數(shù)據(jù)4 if(!empty(照片數(shù)據(jù)4)){ $objDrawing3->setPath(照片數(shù)據(jù)4); // 設(shè)置圖片寬度高度 $objDrawing3->setHeight(100);//照片高度 $objDrawing3->setWidth(100); //照片寬度 /*設(shè)置圖片要插入的單元格*/ $objDrawing3->setCoordinates('P'.$idx); // 圖片偏移距離 $objDrawing3->setOffsetX(0); $objDrawing3->setOffsetY(0); $objDrawing3->setWorksheet($objPHPExcel->getActiveSheet()); } $idx++; } $write = new PHPExcel_Writer_Excel5($objPHPExcel); 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");; header('Content-Disposition:attachment;filename="導(dǎo)出excel的文件名(可自定義)"'); header("Content-Transfer-Encoding:binary"); $write->save('php://output');
????????代碼分享完了,需要小伙伴們注意的是,此次整理的這個(gè)是我項(xiàng)目實(shí)踐成功的代碼,首先需要注意的是,一定要導(dǎo)入phpExcel核心類(lèi),這個(gè)類(lèi)庫(kù)檔案是關(guān)鍵,免費(fèi)下載位址:ThinkPHP實(shí)作資料匯出為Excel檔案的PHPExcel類(lèi)庫(kù)檔案,然後要注意的是,在匯出多個(gè)圖片的時(shí)候一定要記住實(shí)例化多個(gè)圖片變量,否則會(huì)出現(xiàn)變量衝突,圖片覆蓋的問(wèn)題,最後一個(gè)問(wèn)題,需要注意的是讀取數(shù)據(jù)庫(kù)數(shù)據(jù)的時(shí)候,如果數(shù)據(jù)庫(kù)內(nèi)不存在圖片數(shù)據(jù)的話(huà),需要進(jìn)行數(shù)據(jù)是否為空的判斷,否則運(yùn)行會(huì)出現(xiàn)程式錯(cuò)誤異常,如果這些都注意做好,那麼我們的這項(xiàng)功能將會(huì)很好的進(jìn)行程式運(yùn)行和呈現(xiàn)。
以上是ThinkPHP之PHPExcel匯出多張圖片數(shù)據(jù)的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線(xiàn)上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門(mén)文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6
視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版
神級(jí)程式碼編輯軟體(SublimeText3)
