????????之前項目上做過數(shù)據(jù)導(dǎo)出Excel的實例,最近需要導(dǎo)出圖片數(shù)據(jù),沒遇到過這樣的項目,所以在處理成功之際,特此記錄一下,希望可以給有需要的小伙伴一絲靈感!
????????后端控制器方法:
/*導(dǎo)入phpExcel核心類 */ 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 格式 //實例化PHPExcel類 $objPHPExcel = new PHPExcel(); $objPHPExcel->createSheet(0); $objPHPExcel->setActiveSheetIndex(0); $currentSheet = $objPHPExcel->getActiveSheet(); // $objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(300);#設(shè)置單元格行高(此方法經(jīng)過個人測試,發(fā)現(xiàn)會出現(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; //查詢出數(shù)據(jù)庫內(nèi)的數(shù)據(jù)信息 //查詢出所需信息 $searchInfo = M('數(shù)據(jù)表')->select(); //組裝查詢條件 $year_time_result = 自定義設(shè)置的查詢條件; $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è)置單元格高度,這個是重點哦 $currentSheet->getRowDimension($idx) -> setRowHeight(100); //圖片處理類,這個才是圖片導(dǎo)出的關(guān)鍵哦 $objDrawing = new PHPExcel_Worksheet_Drawing(); //開始設(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()); } //圖片處理類,這個才是圖片導(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()); } //圖片處理類,這個才是圖片導(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()); } //圖片處理類,這個才是圖片導(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');
????????代碼分享完了,需要小伙伴們注意的是,此次整理的這個是我項目實踐成功的代碼,首先需要注意的是,一定一定要導(dǎo)入phpExcel核心類,這個類庫文件是關(guān)鍵,免費下載地址:ThinkPHP實現(xiàn)數(shù)據(jù)導(dǎo)出為Excel文件的PHPExcel類庫文件,然后需要注意的是,在導(dǎo)出多個圖片的時候一定要記住實例化多個圖片變量,否則會出現(xiàn)變量沖突,圖片覆蓋的問題,最后一個問題,需要注意的是讀取數(shù)據(jù)庫數(shù)據(jù)的時候,如果數(shù)據(jù)庫內(nèi)不存在圖片數(shù)據(jù)的話,需要進行數(shù)據(jù)是否為空的判斷,否則運行會出現(xiàn)程序錯誤異常,如果這些都注意做好,那么我們的這項功能將會很好的進行程序運行和呈現(xiàn)。
以上是ThinkPHP之PHPExcel導(dǎo)出多張圖片數(shù)據(jù)的詳細(xì)內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費脫衣服圖片

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

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機

Video Face Swap
使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的代碼編輯器

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

禪工作室 13.0.1
功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級代碼編輯軟件(SublimeText3)