PHPExcel 导出包含图片excel
<?php // 这里用的PHPExcel版本号为1.8.0 // 下载地址https://github.com/PHPOffice/PHPExcel 下载ZIP压缩包 // 下载后将Classes文件夹提取出来供后续使用 /* 原插件存放目录结构 根目录下Classes --PHPExcel文件夹 --PHPExcel.php文件 */ /** Include PHPExcel */ require_once '/Classes/PHPExcel.php'; /* 在thinkPHP中 将Classes文件夹重命名成PHPExcel,放到目录 ThinkPHP/Library/Vendor下 存放到thinkPHP中后目录结构 根目录下ThinkPHP --Library --Vendor --PHPExcel --PHPExcel文件夹 --PHPExcel.php文件 */ // 在thinkPHP中包含PHPExcel.php文件方式 // vendor('PHPExcel.PHPExcel'); // 并且在thinkPHP中调用插件的所有类名前加反斜杠 \ // Create new PHPExcel object $objPHPExcel = new \PHPExcel (); // Set document properties $objPHPExcel->getProperties ()->setCreator ( "zend" )-> // 作者 setLastModifiedBy ( "zend" )-> // 最后一次保存者 setTitle ( "Office 2007 XLSX Document" )-> // 标题 setSubject ( "Office 2007 XLSX Document" )-> // 主题 setDescription ( "document for Office 2007 XLSX, generated using PHP classes." )-> // 备注 setKeywords ( "office 2007 openxml php" )-> // 标记 setCategory ( "result file" ); // 类别 $objPHPExcel->getActiveSheet ()->getColumnDimension ( 'A' )->setWidth ( '15' ); // 设置列宽度 $objPHPExcel->getActiveSheet ()->getColumnDimension ( 'B' )->setWidth ( '30' ); $objPHPExcel->getActiveSheet ()->getColumnDimension ( 'C' )->setWidth ( '30' ); $objPHPExcel->getActiveSheet ()->getColumnDimension ( 'D' )->setWidth ( '20' ); // Add some data $objPHPExcel->setActiveSheetIndex ( 0 ) ->setCellValue ( 'A1', '手机号码' ) // 第一行A列值 ->setCellValue ( 'B1', '姓名' ) // 第一行B列值 ->setCellValue ( 'C1', '图片' ) // 第一行C列值 ->setCellValue ( 'D1', '提交时间' ); // 第一行D列值 // 从此开始行数可在循环中累加 $objPHPExcel->setActiveSheetIndex ( 0 ) ->setCellValue ( 'A' . '2', ' ' . '12345678910' ) // 第二行A列值 ->setCellValue ( 'B' . '2', ' ' . '用户名' ); // 第二行B列值 /* 实例化插入图片类 */ $objDrawing = new \PHPExcel_Worksheet_Drawing (); /* 设置图片路径 切记:只能是本地图片 */ $objDrawing->setPath ( './img/test.jpg' ); /* 设置图片高度 */ $objDrawing->setHeight ( 100 ); /* 设置图片要插入的单元格位置 */ $objDrawing->setCoordinates ( 'C' . '2' ); // 这里第二行C列 // 写入图片在指定格中的X坐标值 $objDrawing->setOffsetX ( 20 ); // 写入图片在指定格中的Y坐标值 $objDrawing->setOffsetY ( 20 ); // 设置旋转角度 // $objDrawing->setRotation(20); $objDrawing->getShadow ()->setVisible ( true ); $objDrawing->getShadow ()->setDirection ( 50 ); $objDrawing->setWorksheet ( $objPHPExcel->getActiveSheet () ); // 设置单元格高度 $objPHPExcel->getActiveSheet ()->getRowDimension ( $key + 2 )->setRowHeight ( 100 ); $objPHPExcel->setActiveSheetIndex ( 0 )->setCellValue ( 'D' . '2', ' ' . '2017-08-24 16:01' ); // 第二行D列值 // 如果循环添加行,则此处循环终止 // Rename worksheet $objPHPExcel->getActiveSheet ()->setTitle ( 'Simple' ); // Set active sheet index to the first sheet, so Excel opens this as the first sheet $objPHPExcel->setActiveSheetIndex ( 0 ); // 重定向输出到客户端的Web浏览器 (Excel2007) header ( 'Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' ); header ( 'Content-Disposition: attachment;filename="测试文件名.xlsx"' ); header ( 'Cache-Control: max-age=0' ); // 如果是IE9浏览器,则需要下面这条 header ( 'Cache-Control: max-age=1' ); // 如果是带SSL的IE,则可能用到下面这条 header ( 'Expires: Mon, 26 Jul 1997 05:00:00 GMT' ); // 过去的日期 header ( 'Last-Modified: ' . gmdate ( 'D, d M Y H:i:s' ) . ' GMT' ); // 实时时间 header ( 'Cache-Control: cache, must-revalidate' ); // HTTP/1.1 header ( 'Pragma: public' ); // HTTP/1.0 $objWriter = \PHPExcel_IOFactory::createWriter ( $objPHPExcel, 'Excel2007' ); $objWriter->save ( 'php://output' );