欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php excel文件导出之二 图像导出

程序员文章站 2022-05-13 14:14:06
...
PHP文件导出 之图像 和 文字同时导出

其实之前写了个php文件导出,跟这个极为相似,因为项目需要对图像进行导出,查询一番,又写了一个,

这个能实现图像的导出(只能是本地图像,不能使用远程图像链接)


/**	 * 导出对应的活动投票记录	 */    public function exportxls(){        $alist = datafrom db;    //从数据库获取相应的数据        //1. 从数据库来获取对应的二维数组          $alist = array(...);          $list = $alist;          $data = array();          //2. 设置xls的 表头名          $headArr = array("排名","姓名","手机","获奖","参与时间");          if(false === empty($list)){              $i=0;              foreach ($list as $key => $val){                  //组装对应的单元格A,B,C,D。。。                  $data[$i] = array(                         ($i+1),            //A                         $val['name'],      //B                         $val['tel'],       //C                         $val['award'],     //D                         ...                      );                   $i++;              }          }else{              $data[0] = array('暂无相关记录!');          }  		$imgindexs = array(5); //放入是 图片的列的索引 第一个是0 此为一维数组        $fileName = "your name-".date('Y-m-d');        $this->output_customer($headArr,$data,$fileName,$imgindexs);    }    public function output_customer($headArr,$alist,$filename,$imgindexs){		set_time_limit(0);		ini_set('memory_limit', '-1');		$dir = $_SERVER['DOCUMENT_ROOT']; //定义网站根目录		/** 设置报错级别 */		error_reporting(E_ALL);		ini_set('display_errors', TRUE);		ini_set('display_startup_errors', TRUE);		if (PHP_SAPI == 'cli')		die('This example should only be run from a Web Browser');		/** Include PHPExcel */		require_once $dir.'/public/phpexcel/PHPExcel.php';		// Create new PHPExcel object		$objPHPExcel = new PHPExcel();		// Set document properties		$objPHPExcel->getProperties()->setCreator("Maarten Balliauw")		->setLastModifiedBy("Maarten Balliauw")		->setTitle("Office 2007 XLSX Test Document")		->setSubject("Office 2007 XLSX Test Document")		->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")		->setKeywords("office 2007 openxml php")		->setCategory("Test result file");		/*实例化excel图片处理类*/		$objDrawing = new PHPExcel_Worksheet_Drawing();		$width = 25;		$colnums = count($headArr);		for($i = 0,$startA = "A"; $i getActiveSheet()->getColumnDimension($temp)->setWidth($width);		}        //设置标题        for($i = 0,$startA = "A"; $i setActiveSheetIndex(0)->setCellValue($temp, $headArr[$i]);		}		// Miscellaneous glyphs, UTF-8		$row=2;		foreach($alist as $val){			//设置行高		    $objPHPExcel->getActiveSheet()->getRowDimension($k)->setRowHeight(50);			$span = 0;			$startA = 'A';            //填充每一行的内容			foreach($val as $factval){			   $temp = chr(intval(ord($startA))+$span).$row;               //1.图片填充列			   if(in_array($span in $imgindexs)){			        /*实例化插入图片类*/					$objDrawing = new PHPExcel_Worksheet_Drawing();					/*设置图片路径 切记:只能是本地图片*/					$objDrawing->setPath($dir.$factval);					/*设置图片高度*/					$objDrawing->setHeight(50);					$objDrawing->setWidth(50);					/*设置图片要插入的单元格*/					$objDrawing->setCoordinates($temp);					$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());      			   }else{				   //2.非图片填充列			       $objPHPExcel->setActiveSheetIndex(0)->setCellValue($temp, $factval);			   }			   $span++;			}            $row++; 	    }		// 重命名 worksheet		$date = date('Y-m-d');		$objPHPExcel->getActiveSheet()->setTitle($filename);		// Set active sheet index to the first sheet, so Excel opens this as the first sheet		$objPHPExcel->setActiveSheetIndex(0);        $filename = iconv("utf-8", "gb2312", $filename.date('Y-m-d'));        header('Content-Type: application/vnd.ms-excel;');        header('Content-Disposition: attachment;filename='.$filename.'.xls"');		header('Cache-Control: max-age=0');		// If you're serving to IE 9, then the following may be needed		header('Cache-Control: max-age=1');		// If you're serving to IE over SSL, then the following may be needed		header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past		header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified		header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1		header ('Pragma: public'); // HTTP/1.0               //注意这里 第二个参数写成 'Excel2007' 会避免特殊字符或中文乱码		$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');		$objWriter->save('php://output');		exit;	}


版权声明:本文为博主原创文章,未经博主允许不得转载。