前言
圖片對(duì)excel來說是一個(gè)對(duì)象,正常是導(dǎo)出不到單元格里去,所以大家都很困惑到底該怎么使用PHP語言來進(jìn)行導(dǎo)出呢!下面我就詳細(xì)的講解下怎么使用php導(dǎo)出圖片到excel(此例是使用CI框架)
開始啦!~~~~
如果你沒有PHPEXCEL類庫,可以到http://phpexcel.codeplex.com/里去下載派昧!
下載完成后導(dǎo)入到自己框架的第三方類庫!~CI示例:
注釋:這個(gè)是CI項(xiàng)目的哦拢切,別的框架放到類庫里就行了
下面開始我們的代碼操作蒂萎!~:
//CI框架引入PHPExcel
$this->load->library('PHPExcel');
//實(shí)例化PHPExcel類
$objPHPExcel = new PHPExcel();
重點(diǎn)來了!;匆N宕取纳寂!
//圖片處理類,這個(gè)才是圖片導(dǎo)出的關(guān)鍵哦
$objDrawing = new PHPExcel_Worksheet_Drawing();
//然后正常設(shè)置我們導(dǎo)出圖片的代碼
$objPHPExcel->createSheet(0);
$objPHPExcel->setActiveSheetIndex(0);
$currentSheet = $objPHPExcel->getActiveSheet();
// 水平居中(位置很重要泻拦,建議在最初始位置毙芜,這里我舉例,ABCDEFG,可以按照自己的需求定義争拐!~)
$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);
// 設(shè)置個(gè)表格寬度(這個(gè)一定要設(shè)置哦腋粥,不然圖片會(huì)大廚單元格的)
$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);
//設(shè)置第一行標(biāo)題
$currentSheet->setCellValue('A1', "序列號(hào)");
$currentSheet->setCellValue('B1', "設(shè)備ID");
$currentSheet->setCellValue('C1', "設(shè)備密碼");
$currentSheet->setCellValue('D1', "設(shè)備編碼");
$currentSheet->setCellValue('E1', "二維碼");
$currentSheet->setCellValue('F1', "二維碼");
$currentSheet->setCellValue('G1', "二維碼");
//定義變量初始化為2,從第二行開始
$idx = 2;
//開始循環(huán)數(shù)組數(shù)據(jù)架曹!~
foreach ($devices as $device) {
//設(shè)置數(shù)據(jù)所在單元格隘冲,我這里把圖片放在E里
$currentSheet->setCellValue('A' . $idx, $device['sequence']);
$currentSheet->setCellValue('B' . $idx, $device['device_unique']);
$currentSheet->setCellValue('C' . $idx, $device['device_pwd']);
$currentSheet->setCellValue('D' . $idx, $device['device_code']);
//設(shè)置單元格高度,這個(gè)是重點(diǎn)哦
$currentSheet->getRowDimension($idx) -> setRowHeight(60);
圖片操作來了绑雄!~~~
//獲取圖片
$this->load->model('Device_codes_model');
$codes = $this->Device_codes_model->getOneCodes($id);
//開始設(shè)置圖片啦~~
$objDrawing->setPath($codes['code_file']);
// 設(shè)置圖片寬度高度
$objDrawing->setHeight(80);//照片高度
$objDrawing->setWidth(80); //照片寬度
/*設(shè)置圖片要插入的單元格*/
$objDrawing->setCoordinates('E'.$idx);
// 圖片偏移距離
$objDrawing->setOffsetX(12);
$objDrawing->setOffsetY(12);
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
$idx++;
}
//導(dǎo)出excel到表格
$sheetWrite = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
有沒有對(duì)你起到幫助呢展辞!不懂的可以咨詢:WX:nxy18336033555 QQ:1264512198 加的時(shí)候備注一下哦!~