thinkphp导出excel的方法带图片导出
1、下载PHPExcel,放入thinkphp框架根目录的vendor文件夹下;
2、
public function export(){try {//查询数据库信息$xlsData = Db::name('ltembank')->order('id','desc')->limit(20)->select();if(count($xlsData) == 0){$this->error(__('暂无题目'));}} catch (\Exception $e) {return $e->getMessage();}Vendor('PHPExcel.PHPExcel');//调用类库,路径是基于vendor文件夹的Vendor('PHPExcel.PHPExcel.Worksheet.Drawing');Vendor('PHPExcel.PHPExcel.Writer.Excel2007');//实例化$objExcel = new \PHPExcel();//设置文档属性$objWriter = \PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');//设置内容$objActSheet = $objExcel->getActiveSheet();$key = ord("A");$letter = explode(',', "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O");$arrHeader = array('所属题库', '所属知识点','题目等级','题型','标题','难易程度','答案解析','题项A' ,'题项B','题项C','题项D','题项E','正确答案','题目ID','题目图片');//填充表头信息$lenth = count($arrHeader);for ($i = 0; $i < $lenth; $i++) {$objActSheet->setCellValue("$letter[$i]1", "$arrHeader[$i]");};//填充表格信息foreach ($xlsData as $k => $v) {$k += 2;//表格内容$objActSheet->setCellValue('A' . $k, $v['subject_id']);$objActSheet->setCellValue('B' . $k, $v['zhishidian']);$objActSheet->setCellValue('C' . $k, $v['level']);$objActSheet->setCellValue('D' . $k, $v['tixin_id']);$objActSheet->setCellValue('E' . $k, $v['subject']);$objActSheet->setCellValue('F' . $k, $v['facility']);$objActSheet->setCellValue('G' . $k, $v['daanjiexie']);$objActSheet->setCellValue('H' . $k, $v['option_0']);$objActSheet->setCellValue('I' . $k, $v['option_1']);$objActSheet->setCellValue('J' . $k, $v['option_2']);$objActSheet->setCellValue('K' . $k, $v['option_3']);$objActSheet->setCellValue('L' . $k, $v['option_4']);$objActSheet->setCellValue('M' . $k, $v['answer']);$objActSheet->setCellValue('N' . $k, $v['id']);// 图片生成$objDrawing[$k] = new \PHPExcel_Worksheet_Drawing();if(!empty($v['image'])){$img = "http://sailanpeixun.gzmc668.com{$v['image']}";$temp_pic = self::download($img,"/disk1/sailanpeixun/public/uploads/downexcelimage/");$local_pic_path = '/disk1/sailanpeixun/public/uploads/downexcelimage/' . $temp_pic;$objDrawing[$k]->setPath($local_pic_path);//设置宽度高度$objDrawing[$k]->setHeight(20);//照片高度$objDrawing[$k]->setWidth(20); //照片宽度//设置图片要插入的单元格$objDrawing[$k]->setCoordinates('O' . $k);//图片偏移距离$objDrawing[$k]->setOffsetX(10);$objDrawing[$k]->setOffsetY(5);$objDrawing[$k]->setWorksheet($objExcel->getActiveSheet());}// 表格高度$objActSheet->getRowDimension($k)->setRowHeight(20);}$width = array(20, 20, 15, 10, 10, 30, 10, 15,100);//设置表格的宽度$objActSheet->getColumnDimension('A')->setWidth($width[5]);$objActSheet->getColumnDimension('B')->setWidth($width[1]);$objActSheet->getColumnDimension('C')->setWidth($width[0]);$objActSheet->getColumnDimension('D')->setWidth($width[5]);$objActSheet->getColumnDimension('E')->setWidth($width[8]);$objActSheet->getColumnDimension('F')->setWidth($width[5]);$objActSheet->getColumnDimension('G')->setWidth($width[8]);$objActSheet->getColumnDimension('H')->setWidth($width[5]);$objActSheet->getColumnDimension('I')->setWidth($width[5]);$objActSheet->getColumnDimension('J')->setWidth($width[5]);$objActSheet->getColumnDimension('K')->setWidth($width[5]);$objActSheet->getColumnDimension('L')->setWidth($width[5]);$objActSheet->getColumnDimension('M')->setWidth($width[5]);$objActSheet->getColumnDimension('N')->setWidth($width[3]);$outfile = date('Y-m-d') . ".xlsx";ob_end_clean();header("Content-Type: application/force-download");header("Content-Type: application/octet-stream");header("Content-Type: application/download");header('Content-Disposition:inline;filename="' . $outfile . '"');header("Content-Transfer-Encoding: binary");header("Cache-Control: must-revalidate, post-check=0, pre-check=0");header("Pragma: no-cache");$objWriter->save('php://output');}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;}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
