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 获取可变函数参数的函数
Aug 26 PHP
用PHP编写和读取XML的几种方式
Jan 12 PHP
基于PHP静态类的原罪详解
May 06 PHP
深入PHP内存相关的功能特性详解
Jun 08 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
May 08 PHP
php实现兼容2038年后Unix时间戳转换函数
Mar 18 PHP
PHP统计当前在线用户数实例讲解
Oct 21 PHP
php注册登录系统简化版
Dec 28 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
Nov 10 PHP
实例分析基于PHP微信网页获取用户信息
Nov 24 PHP
Laravel数据库读写分离配置的方法
Oct 13 PHP
PHP中mysqli_get_server_version()的实例用法
Feb 03 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获取文件绝对路径的代码(上一级目录)
2011/05/29 PHP
php中防止伪造跨站请求的小招式
2011/09/02 PHP
thinkphp实现图片上传功能分享
2014/03/04 PHP
Laravel 5 学习笔记
2015/03/06 PHP
WordPres对前端页面调试时的两个PHP函数使用小技巧
2015/12/22 PHP
非常重要的php正则表达式详解
2016/01/04 PHP
javascript操作文本框readOnly
2007/05/15 Javascript
IE和Mozilla的兼容性汇总event
2007/08/12 Javascript
捕获关闭窗口的脚本
2009/01/10 Javascript
禁用页面部分JavaScript方法的具体实现
2013/07/31 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
2014/05/07 Javascript
nodejs文件操作模块FS(File System)常用函数简明总结
2014/06/05 NodeJs
14款NodeJS Web框架推荐
2014/07/11 NodeJs
JavaScript中的small()方法使用详解
2015/06/08 Javascript
Bootstrap创建可折叠的组件
2016/02/23 Javascript
jQuery实现下拉框左右移动(全部移动,已选移动)
2016/04/15 Javascript
jQuery ajax应用总结
2016/06/02 Javascript
JavaScript对象数组排序实例方法浅析
2016/06/15 Javascript
详解windows下vue-cli及webpack 构建网站(二)导入bootstrap样式
2017/06/17 Javascript
Angular2+国际化方案(ngx-translate)的示例代码
2017/08/23 Javascript
学习JS中的DOM节点以及操作
2018/04/30 Javascript
详解angular分页插件tm.pagination二次触发问题解决方案
2018/07/20 Javascript
vue中接口域名配置为全局变量的实现方法
2018/09/20 Javascript
原生JS实现的放大镜特效示例【测试可用】
2018/12/08 Javascript
Vue动态路由缓存不相互影响的解决办法
2019/02/19 Javascript
vue实现文字横向无缝走马灯组件效果的实例代码
2019/04/09 Javascript
vue的webcamjs集成方式
2020/11/16 Javascript
深入解析Python中的集合类型操作符
2015/08/19 Python
Python json 错误xx is not JSON serializable解决办法
2017/03/15 Python
Python编程django实现同一个ip十分钟内只能注册一次
2017/11/03 Python
django haystack实现全文检索的示例代码
2020/06/24 Python
CSS Houdini实现动态波浪纹效果
2019/07/30 HTML / CSS
德国传统玻璃制造商:Cristalica
2018/04/23 全球购物
高三毕业寄语
2014/04/10 职场文书
2015年民主生活会发言材料
2014/12/15 职场文书
Redis高并发缓存架构性能优化
2022/05/15 Redis