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下载文件的详解
Jun 02 PHP
php 批量替换程序的具体实现代码
Oct 04 PHP
php数组中包含中文的排序方法
Jun 03 PHP
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
Jun 04 PHP
php类中的各种拦截器用法分析
Nov 03 PHP
PHP图像裁剪缩略裁切类源码及使用方法
Jan 07 PHP
php关闭warning问题的解决方法
May 17 PHP
Yii2 RESTful中api的使用及开发实例详解
Jul 06 PHP
PHP互换两个变量值的方法(不用第三变量)
Nov 14 PHP
PHP延迟静态绑定的深入讲解
Apr 02 PHP
PHP+jQuery实现即点即改功能示例
Feb 21 PHP
php简单计算权重的方法示例【适合抽奖类应用】
Jun 10 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
mysql总结之explain
2012/02/27 PHP
PHP实现普通hash分布式算法简单示例
2018/08/06 PHP
CCPry JS类库 代码
2009/10/30 Javascript
Javascript中的window.event.keyCode使用介绍
2011/04/26 Javascript
让你的博客飘雪花超出屏幕依然看得见
2013/01/04 Javascript
不用构造函数(Constructor)new关键字也能实现JavaScript的面向对象
2013/01/11 Javascript
详解JavaScript对W3C DOM模版的支持情况
2015/06/16 Javascript
浅谈Javascript实现继承的方法
2015/07/06 Javascript
jQuery表格行上移下移和置顶的实现方法
2015/10/08 Javascript
在javascript中随机数 math random如何生成指定范围数值的随机数
2015/10/21 Javascript
jquery+json实现数据二级联动的方法
2015/11/28 Javascript
浅谈jQuery效果函数
2016/09/16 Javascript
nodejs批量下载图片的实现方法
2017/05/19 NodeJs
Angular 2父子组件数据传递之局部变量获取子组件其他成员
2017/07/04 Javascript
vue.js 实现评价五角星组件的实例代码
2018/08/13 Javascript
vuex如何重置所有state(可定制)
2019/01/17 Javascript
详解webpack 最简打包结果分析
2019/02/20 Javascript
vue基础之v-bind属性、class和style用法分析
2019/03/11 Javascript
Layui 带多选框表格监听事件以及按钮自动点击写法实例
2019/09/02 Javascript
Python基于DES算法加密解密实例
2015/06/03 Python
python中异常报错处理方法汇总
2016/11/20 Python
python实现名片管理系统项目
2019/04/26 Python
python-OpenCV 实现将数组转换成灰度图和彩图
2020/01/09 Python
django 数据库返回queryset实现封装为字典
2020/05/19 Python
基于python实现复制文件并重命名
2020/09/16 Python
德国传统玻璃制造商:Cristalica
2018/04/23 全球购物
琳达·法罗眼镜英国官网:Linda Farrow英国
2021/01/19 全球购物
这段代码难道不该打印出56吗
2013/02/27 面试题
应届生文秘专业个人自荐信格式
2013/09/21 职场文书
黄河象教学反思
2014/02/10 职场文书
物业经理自我鉴定
2014/03/03 职场文书
班风学风建设方案
2014/05/06 职场文书
公司股东出资证明书
2014/11/01 职场文书
2015年小学英语教师工作总结
2015/05/12 职场文书
美容院管理规章制度
2015/08/05 职场文书
Redis配置外网可访问(redis远程连接不上)的方法
2022/12/24 Redis