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; }



原文地址:https://www.cnblogs.com/gcczhongduan/p/5283448.html