thinkphp3.2中实现phpexcel导出带生成图片示例


Posted in PHP onFebruary 14, 2017

首先下载PHPEXCEL  下载地址:http://phpexcel.codeplex.com/        https://github.com/PHPOffice/PHPExcel

把Classes目录下的文件(PHPExcel.php和PHPExcel文件夹),放到ThinkPHP\Library\Org\Util目录下

PHPExcel.php  改名为 :PHPExcel.class.php

// 导出exl

  public function look_down(){

    $id = I('get.id');

    $m = M ('offer_goods');

    $where['offer_id'] = $id;

    $data = $m->field('goods_id,goods_sn,goods_name,barcode,goods_type,price')->select();

     

    // 导出Exl

    import("Org.Util.PHPExcel");

    import("Org.Util.PHPExcel.Worksheet.Drawing");

    import("Org.Util.PHPExcel.Writer.Excel2007");

    $objPHPExcel = new \PHPExcel();

     

    $objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel);

   

    $objActSheet = $objPHPExcel->getActiveSheet();

     

    // 水平居中(位置很重要,建议在最初始位置)

    $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

    $objPHPExcel->setActiveSheetIndex(0)->getStyle('B1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

    $objPHPExcel->setActiveSheetIndex(0)->getStyle('C')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

    $objPHPExcel->setActiveSheetIndex(0)->getStyle('D')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

    $objPHPExcel->setActiveSheetIndex(0)->getStyle('E')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

    $objPHPExcel->setActiveSheetIndex(0)->getStyle('F')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

     

    $objActSheet->setCellValue('A1', '商品货号');

    $objActSheet->setCellValue('B1', '商品名称');

    $objActSheet->setCellValue('C1', '商品图');

    $objActSheet->setCellValue('D1', '商品条码');

    $objActSheet->setCellValue('E1', '商品属性');

    $objActSheet->setCellValue('F1', '报价(港币)');

    // 设置个表格宽度

    $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(16);

    $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(80);

    $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(15);

    $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);

    $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(12);

    $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(12);

     

    // 垂直居中

    $objPHPExcel->getActiveSheet()->getStyle('A')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);

    $objPHPExcel->getActiveSheet()->getStyle('B')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);

    $objPHPExcel->getActiveSheet()->getStyle('D')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);

    $objPHPExcel->getActiveSheet()->getStyle('E')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);

    $objPHPExcel->getActiveSheet()->getStyle('F')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);

     

    foreach($data as $k=>$v){

      $k +=2;

      $objActSheet->setCellValue('A'.$k, $v['goods_sn']);  

      $objActSheet->setCellValue('B'.$k, $v['goods_name']);  

         

       

      $img = M('goods')->where('goods_id = '.$v['goods_id'])->field('goods_thumb')->find();

      // 图片生成

      $objDrawing[$k] = new \PHPExcel_Worksheet_Drawing();

      $objDrawing[$k]->setPath('./Upload/'.$img['goods_thumb']);

      // 设置宽度高度

      $objDrawing[$k]->setHeight(80);//照片高度

      $objDrawing[$k]->setWidth(80); //照片宽度

      /*设置图片要插入的单元格*/

      $objDrawing[$k]->setCoordinates('C'.$k);

      // 图片偏移距离

      $objDrawing[$k]->setOffsetX(12);

      $objDrawing[$k]->setOffsetY(12);

      $objDrawing[$k]->setWorksheet($objPHPExcel->getActiveSheet());

       

      // 表格内容

      $objActSheet->setCellValue('D'.$k, $v['barcode']);  

      $objActSheet->setCellValue('E'.$k, $v['goods_type']);  

      $objActSheet->setCellValue('F'.$k, $v['price']);

         

      // 表格高度

      $objActSheet->getRowDimension($k)->setRowHeight(80);

       

    }

     

    $fileName = '报价表';

    $date = date("Y-m-d",time());

    $fileName .= "_{$date}.xls";

    $fileName = iconv("utf-8", "gb2312", $fileName);

    //重命名表

    // $objPHPExcel->getActiveSheet()->setTitle('test');

    //设置活动单指数到第一个表,所以Excel打开这是第一个表

    $objPHPExcel->setActiveSheetIndex(0);

    header('Content-Type: application/vnd.ms-excel');

    header("Content-Disposition: attachment;filename=\"$fileName\"");

    header('Cache-Control: max-age=0');

    $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

    $objWriter->save('php://output'); //文件通过浏览器下载

    // END  

  }

水平居中,垂直居中,高度 等设置。注意放的位置,如果你放在末尾,那么是下一样生效。放到头部,第一行生效(上面代码是第一行生效,如果放到foreach里面就是下一行生效)。

import介绍。import("Org.Util.PHPExcel.Writer.Excel2007"); 文件位置:Org\Util\PHPExcel\Writer\Excel2007.class.php

图片地址一定要是本地。objDrawing[ objDrawing[k]->setPath('./Upload/'.$img['goods_thumb']); 图片位置:安装目录/Upload/xxx

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP个人网站架设连环讲(二)
Oct 09 PHP
PHP 开发工具
Dec 06 PHP
非常不错的MySQL优化的8条经验
Mar 24 PHP
PHP对字符串的递增运算分析
Aug 08 PHP
php 中英文语言转换类代码
Aug 11 PHP
php mysql 判断update之后是否更新了的方法
Jan 10 PHP
php中把美国时间转为北京时间的自定义函数分享
Jul 28 PHP
在openSUSE42.1下编译安装PHP7 的方法
Dec 24 PHP
php数组冒泡排序算法实例
May 06 PHP
Yii2表单事件之Ajax提交实现方法
May 04 PHP
stripos函数知识点实例分享
Feb 11 PHP
php + ajax 实现的写入数据库操作简单示例
May 16 PHP
PHP中Trait及其应用详解
Feb 14 #PHP
php数组指针操作详解
Feb 14 #PHP
PHP中include()与require()的区别说明
Feb 14 #PHP
php中的抽象方法和抽象类
Feb 14 #PHP
PHP静态成员变量和非静态成员变量详解
Feb 14 #PHP
PHP静态成员变量
Feb 14 #PHP
php中序列化与反序列化详解
Feb 13 #PHP
You might like
说明的比较细的php 正则学习实例
2008/07/30 PHP
php 数组的创建、调用和更新实现代码
2009/03/09 PHP
apache2.2.4+mysql5.0.77+php5.2.8安装精简
2009/04/29 PHP
php计算数组不为空元素个数的方法
2014/01/27 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
2014/10/30 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
2015/07/01 PHP
浅析PHP中的i++与++i的区别及效率
2016/06/15 PHP
Yii2中使用asset压缩js,css文件的方法
2016/11/24 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
javascript 文章截取部分无损html显示实现代码
2010/05/04 Javascript
jquery $.fn $.fx是什么意思有什么用
2013/11/04 Javascript
js substring从右边获取指定长度字符串(示例代码)
2013/12/23 Javascript
把jQuery的类、插件封装成seajs的模块的方法
2014/03/12 Javascript
JS的事件绑定深入认识
2014/06/26 Javascript
JavaSciprt中处理字符串之sup()方法的使用教程
2015/06/08 Javascript
jQuery实现tab选项卡效果的方法
2015/07/08 Javascript
jQuery获取URL请求参数的方法
2015/07/18 Javascript
在JavaScript中模拟类(class)及类的继承关系
2016/05/20 Javascript
AngularJS 模块详解及简单实例
2016/07/28 Javascript
AngularJS equal比较对象实例详解
2016/09/14 Javascript
详解Vue-Router源码分析路由实现原理
2019/05/15 Javascript
移动端JS实现拖拽两种方法解析
2020/10/12 Javascript
[01:08:09]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第二局
2016/03/02 DOTA
跟老齐学Python之??碌某?? target=
2014/09/12 Python
Python 多个图同时在不同窗口显示的实现方法
2019/07/07 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
2020/04/22 Python
浅谈Python描述数据结构之KMP篇
2020/09/06 Python
英国最大的独立家具零售商:Furniture Village
2016/09/06 全球购物
性能服装:HYLETE
2018/08/14 全球购物
市优秀教师事迹材料
2014/02/05 职场文书
家长寄语大全
2014/04/02 职场文书
四年级数学上册教学计划
2015/01/20 职场文书
开学第一天的感想
2015/08/10 职场文书
信息技术教研组工作总结
2015/08/13 职场文书
党组织关系的介绍信模板
2019/06/21 职场文书
gtx1650怎么样 gtx1650显卡相当于什么级别
2022/04/08 数码科技