PHP输出Excel PHPExcel的方法


Posted in PHP onJuly 26, 2018

本文实例为大家分享了PHP输出Excel PHPExcel的具体代码,供大家参考,具体内容如下

方法1:

/** 
 * 创建(导出)Excel数据表格 
 * @param array $list 要导出的数组格式的数据 
 * @param string $filename 导出的Excel表格数据表的文件名 
 * @param array $header Excel表格的表头 
 * @param array $index $list数组中与Excel表格表头$header中每个项目对应的字段的名字(key值) 
 * 比如: $header = array('编号','姓名','性别','年龄'); 
 *  $index = array('id','username','sex','age'); 
 *  $list = array(array('id'=>1,'username'=>'YQJ','sex'=>'男','age'=>24)); 
 * @return [array] [数组] 
 */ 
function createtable($list,$filename,$header=array(),$index = array()){ 
 header("Content-type:application/vnd.ms-excel"); 
 header("Content-Disposition:filename=".$filename.".xls"); 
 $teble_header = implode("\t",$header); 
 $strexport = $teble_header."\r"; 
 foreach ($list as $row){ 
  foreach($index as $val){ 
   $strexport.=$row[$val]."\t";  
  } 
  $strexport.="\r"; 

 } 
 $strexport=iconv('UTF-8',"GB2312//IGNORE",$strexport); 
 exit($strexport);  
}

此方法代码量少,可以放在thinkPHP5中的公共函数common.php中,方便调用,但是对输出的Excel表格无法设置属性

方法2:

首先需要到下载SDK,GitHub下载地址,下载后解压,我们只需要里边的Classes文件夹,将其改名为PHPExcel。我这里是基于thinkPHP5的,可以放置在app同级目录的extend中。

PHP输出Excel PHPExcel的方法

/*
  PHPExcel
 */
 public function excel(){

  Loader::import('PHPExcel.PHPExcel'); //thinkphp5加载类库
  $objPHPExcel = new \PHPExcel();  //实例化PHPExcel类,
  $objSheet = $objPHPExcel->getActiveSheet();  //获取当前活动的sheet对象
  $objSheet->setTitle("test");  //给当前活动sheet起个名称

  /*字符串方式填充数据,开发中可以将数据库取出的数据根据具体情况遍历填充*/
  $objSheet->setCellValue("A1","姓名")->setCellValue("B1","分数")->setCellValue("C1","班级");  //填充数据
  // $objSheet->setCellValue("A2","张三")->setCellValue("B2","3434346354634563443634634634563")->setCellValue("C2","一班");  //填充数据
  $objSheet->setCellValue("A2","张三")->setCellValueExplicit("B2","123216785321321321312",\PHPExcel_Cell_DataType::TYPE_STRING)->setCellValue("C2","一班");//填充数据时添加此方法,并且使用getNumberFormat方法和setFormatCode方法设置,可以让如订单号等长串数字不使用科学计数法

  /*数组方式填充数据*/
  $arr = [
   [],  //空出第一行,打印出的效果将空出第一行
   ['','信息'],  //空出第一列,打印出的效果将空出第一列
   ['',"姓名\nname",'年龄','性别','分数','年级'],  //空出第一列,*这里的\n是为了*配合setWrapText自动换行
   ['','李四','33','男','33543653456346363646','4'], 
   ['','李四','33','男','54546456456447478548','4'], 
   ['','李四','33','男','56635374658465632545','5'], 
   ['','李四','33','男','87473457856856745646','5'], 
   ['','李四','33','男','32','7'], 
   ['','李四','33','男','98','5'], 
  ];
  $objSheet->fromArray($arr);  //填充数组数据,较为消耗资源且阅读不便,不推荐


  /*样式配置信息--方法配置*/
  $objSheet->mergecells("B2:F2");  //合并单元格
  $objSheet->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER)->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//设置excel文件默认水平垂直方向居中,垂直setVertical,水平setHorizontal,因为是基于thinkPHP5所以这里PHPExcel_Style_Alignment前使用"\"引入
  $objSheet->getDefaultStyle()->getFont()->setSize(14)->setName("微软雅黑");//设置所有默认字体大小和格式
  $objSheet->getStyle("B2:F2")->getFont()->setSize(20)->setBold(true);//设置指定范围内字体大小和加粗
  $objSheet->getDefaultRowDimension()->setRowHeight(33);//设置所有行默认行高
  $objSheet->getRowDimension(2)->setRowHeight(50);//设置指定行(第二行)行高
  $objSheet->getStyle("B2:F2")->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('EEC591');//指定填充背景颜色,不需要加"#"定义样式数组,字体,背景,边框等都此方法设置,这里展示边框
  $objSheet->getStyle("B3")->getAlignment()->setWrapText(true);//设置文字自动换行,要用getStyle()方法选中范围,同时要在内容中添加"\n",而且该内容要用双引号才会解析
  $objSheet->getStyle("E")->getNumberFormat()->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_TEXT);//设置某列单元格格式为文本格式,便于禁用科学计数法

  /*数组配置*/
  $styleArray = array(
   'borders' => array(
    'outline' => array(
     'style' => \PHPExcel_Style_Border::BORDER_THICK,
     'color' => array('rgb' => 'EE0000'),
    ),
   ),
  );
  $objSheet->getStyle("B3:G3")->applyFromArray($styleArray);//设置指定区域的边框,设置边框必须要使用getStyle()选中范围


  $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007');//生成objWriter对象,Excel2007(xlsx)为指定格式,还有Excel5表示Excel2003(xls)

  /*浏览器查看,浏览器保存*/
  self::browser_excel('Excel2007','test.xlsx');//输出到浏览器,参数1位Excel类型可为Excel5和Excel2007,第二个参数为文件名(需加后缀名),此方法为自定义
  $objWriter->save("php://output");  //save()里可以直接填写保存路径

  /*保存到知道路径*/
  $objWriter->save(ROOT_PATH."excel.xlsx");  //save()里可以直接填写保存路径

}

自定义的浏览器header设置方法

/*
 浏览器打开时设置header头
 $type excel版本类型 Excel5---Excel2003, Excel2007
 $filename 输出的文件名
*/
 function browser_excel($type,$filename){
  if($type=="Excel5"){
    header('Content-Type: application/vnd.ms-excel');//告诉浏览器将要输出excel03文件
  }else{
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');//告诉浏览器数据excel07文件
  }
  header('Content-Disposition: attachment;filename="'.$filename.'"');//告诉浏览器将输出文件的名称,要是没有设置,会把当前文件名设置为名称
  header('Cache-Control: max-age=0');//禁止缓存
}

想要获取更完善的配置信息,百度PHPExcel中文文档有很多参考资料。

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

PHP 相关文章推荐
PHP4 与 MySQL 数据库操作函数详解
Oct 09 PHP
关于IIS php调用com组件的权限问题
Jan 11 PHP
PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
Apr 09 PHP
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
May 06 PHP
深入密码加salt原理的分析
Jun 06 PHP
phpword插件导出word文件时中文乱码问题处理方案
Aug 19 PHP
PHP日期函数date格式化UNIX时间的方法
Mar 19 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
Oct 20 PHP
PHP缓冲区用法总结
Feb 14 PHP
PHP实现批量删除(封装)
Apr 28 PHP
PHP实现的二分查找算法实例分析
Dec 19 PHP
PHP实现笛卡尔积算法的实例讲解
Dec 22 PHP
PHP微信H5支付开发实例
Jul 25 #PHP
php app支付宝回调(异步通知)详解
Jul 25 #PHP
php支付宝APP支付功能
Jul 29 #PHP
PHP多个图片压缩成ZIP的方法
Aug 18 #PHP
PHP上传文件及图片到七牛的方法
Jul 25 #PHP
详解PHP版本兼容之openssl调用参数
Jul 25 #PHP
PHP实现的多维数组去重操作示例
Jul 21 #PHP
You might like
PHP中GET变量的使用
2006/10/09 PHP
js中访问html中iframe的文档对象的代码[IE6,IE7,IE8,FF]
2011/01/08 Javascript
jquery三个关闭弹出层的小示例
2013/11/05 Javascript
js获得页面的高度和宽度的方法
2014/02/23 Javascript
在jquery boxy中添加百度地图坐标拾取注意流程
2014/04/03 Javascript
jQuery实现带滚动线条导航效果的方法
2015/01/30 Javascript
使用node+vue.js实现SPA应用
2016/01/28 Javascript
基于Turn.js 实现翻书效果实例解析
2016/06/20 Javascript
Javascript中级语法快速入手
2016/07/30 Javascript
Three.js学习之正交投影照相机
2016/08/01 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
Angular2使用jQuery的方法教程
2017/05/28 jQuery
vue.js数据绑定操作详解
2018/04/23 Javascript
NVM安装nodejs的方法实用步骤
2019/01/16 NodeJs
使用vue-cli4.0快速搭建一个项目的方法步骤
2019/12/04 Javascript
[07:31]DOTA2卡尔工作室 英雄介绍主宰篇
2013/06/25 DOTA
从零学Python之入门(四)运算
2014/05/27 Python
Python并发编程协程(Coroutine)之Gevent详解
2017/12/27 Python
Python中的并发处理之asyncio包使用的详解
2018/04/03 Python
Django如何自定义model创建数据库索引的顺序
2019/06/20 Python
Django Rest framework认证组件详细用法
2019/07/25 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
2020/02/16 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
2020/02/26 Python
Python转换字典成为对象,可以用"."方式访问对象属性实例
2020/05/11 Python
python爬虫如何解决图片验证码
2021/02/14 Python
日本非常有名的内衣丝袜品牌:GUNZE
2017/01/06 全球购物
Stokke美国官方网店:高级儿童家具、推车、汽车座椅和配件
2020/06/06 全球购物
屈臣氏俄罗斯在线商店:Watsons俄罗斯
2020/08/03 全球购物
计算机应用专业学生的自我评价分享
2013/11/03 职场文书
少先队学雷锋活动总结范文
2014/03/09 职场文书
民生工程实施方案
2014/03/22 职场文书
《观舞记》教学反思
2014/04/16 职场文书
初中班级口号
2014/06/09 职场文书
2014年保险业务员工作总结
2014/12/23 职场文书
单位领导婚礼致辞
2015/07/28 职场文书
浅谈Nginx 中的两种限流方式
2021/03/31 Servers