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

来源:互联网 发布:java初学者推荐书籍 编辑:程序博客网 时间:2024/05/20 10:14

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 neededheader('Cache-Control: max-age=1');// If you're serving to IE over SSL, then the following may be neededheader ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the pastheader ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modifiedheader ('Cache-Control: cache, must-revalidate'); // HTTP/1.1header ('Pragma: public'); // HTTP/1.0               //注意这里 第二个参数写成 'Excel2007' 会避免特殊字符或中文乱码$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');$objWriter->save('php://output');exit;}


1 0