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 相关文章推荐
mysql 中InnoDB和MyISAM的区别分析小结
Apr 15 PHP
PHP常用代码大全(新手入门必备)
Jun 29 PHP
php递归使用示例(php递归函数)
Feb 14 PHP
微信自定义菜单的处理开发示例
Apr 16 PHP
PHP抓取网页、解析HTML常用的方法总结
Jul 01 PHP
关于PHP开发的9条建议
Jul 27 PHP
PHP中的switch语句的用法实例详解
Oct 21 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
Nov 09 PHP
php常用字符串String函数实例总结【转换,替换,计算,截取,加密】
Dec 07 PHP
PHP 配置后台登录以及模板引入
Jan 24 PHP
PHP操作Redis数据库常用方法示例
Aug 25 PHP
PHP实现抽奖功能实例代码
Jun 30 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执行速度全攻略
2006/10/09 PHP
php上传文件的增强函数
2010/07/21 PHP
PHP怎样用正则抓取页面中的网址
2016/08/09 PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
2016/09/14 PHP
tp5(thinkPHP5)框架实现多数据库查询的方法
2019/01/10 PHP
PHP Include文件实例讲解
2019/02/15 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
YII2框架使用控制台命令的方法分析
2020/03/18 PHP
javascript offsetX与layerX区别
2010/03/12 Javascript
jQuery 1.5 源码解读 面向中高阶JSER
2011/04/05 Javascript
当自定义数据属性为json格式字符串时jQuery的data api问题探讨
2013/02/18 Javascript
点击隐藏页面左栏或右栏实现js代码
2013/04/01 Javascript
js点击文本框弹出可选择的checkbox复选框
2016/02/03 Javascript
给angular加上动画效遇到的问题总结
2016/02/17 Javascript
HTML5 JS压缩图片并获取图片BASE64编码上传
2020/11/16 Javascript
JS实现简易刻度时钟示例代码
2017/03/11 Javascript
解决浏览器会自动填充密码的问题
2017/04/28 Javascript
Vue基于NUXT的SSR详解
2017/10/24 Javascript
利用vue + koa2 + mockjs模拟数据的方法教程
2017/11/22 Javascript
微信小程序wepy框架笔记小结
2018/08/08 Javascript
Vue 使用Props属性实现父子组件的动态传值详解
2019/11/13 Javascript
[42:22]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第一局
2016/02/27 DOTA
Ubuntu下Anaconda和Pycharm配置方法详解
2019/06/14 Python
python 视频逐帧保存为图片的完整实例
2019/12/10 Python
解决json中ensure_ascii=False的问题
2020/04/03 Python
Python函数的迭代器与生成器的示例代码
2020/06/18 Python
玩具反斗城葡萄牙官方商城:Toys"R"Us葡萄牙
2016/10/21 全球购物
财务管理职业生涯规划范文
2013/12/27 职场文书
廉政教育心得体会
2014/01/01 职场文书
工作建议书范文
2014/05/13 职场文书
供应链金融服务方案
2014/05/25 职场文书
环保口号大全
2014/06/12 职场文书
行政诉讼答辩状
2015/05/21 职场文书
父亲节感言
2015/08/03 职场文书
Windows Server 2022 超融合部署(图文教程)
2022/06/25 Servers
mysql函数之截取字符串的实现
2022/08/14 MySQL