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

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 < $colnums; $i++) {
			// 设置列数
            $temp = chr(intval(ord($startA))+$i);
			$objPHPExcel->getActiveSheet()->getColumnDimension($temp)->setWidth($width);
		}

        //设置标题
        for($i = 0,$startA = "A"; $i < $colnums; $i++) {
			// 设置列数
            $temp = chr(intval(ord($startA))+$i).'1';
			$objPHPExcel->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;
	}


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值