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 相关文章推荐
使用PHP的日期与时间函数技巧
Apr 24 PHP
PHP中文分词的简单实现代码分享
Jul 17 PHP
解析posix与perl标准的正则表达式区别
Jun 17 PHP
phpmailer发送gmail邮件实例详解
Jun 24 PHP
浅析echo(),print(),print_r(),return之间的区别
Nov 27 PHP
php下Memcached入门实例解析
Jan 05 PHP
php找出指定范围内回文数且平方根也是回文数的方法
Mar 23 PHP
PHP微信公众号自动发送红包API
Jun 01 PHP
PHP版微信小店接口开发实例
Nov 12 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
详解PHP的抽象类和抽象方法以及接口总结
Mar 15 PHP
提高Laravel应用性能方法详解
Jun 24 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创建PDF中文文档
2006/10/09 PHP
php urlencode()与urldecode()函数字符编码原理详解
2011/12/06 PHP
php检测图片木马多进制编程实践
2013/04/11 PHP
php生成二维码的几种方式整理及使用实例
2013/06/03 PHP
Thinkphp实现MySQL读写分离操作示例
2014/06/25 PHP
Yii框架form表单用法实例
2014/12/04 PHP
thinkPHP批量删除的实现方法分析
2016/11/09 PHP
php实现小程序支付完整版
2018/10/09 PHP
jquery中邮箱地址 URL网站地址正则验证实例代码
2013/09/15 Javascript
BootStrap 下拉菜单点击之后不会出现下拉菜单(下拉菜单不弹出)的解决方案
2016/12/14 Javascript
js实现动态显示时间效果
2017/03/06 Javascript
bootstrap是什么_动力节点Java学院整理
2017/07/14 Javascript
JavaScript引用类型RegExp基本用法详解
2018/08/09 Javascript
这15个Vue指令,让你的项目开发爽到爆
2019/10/11 Javascript
javascript实现电商放大镜效果
2020/11/23 Javascript
[55:45]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.24
2019/09/10 DOTA
Python操作列表的常用方法分享
2014/02/13 Python
python实现登陆知乎获得个人收藏并保存为word文件
2015/03/16 Python
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
详解python函数传参是传值还是传引用
2018/01/16 Python
详解Python之unittest单元测试代码
2018/01/24 Python
Python 判断文件或目录是否存在的实例代码
2018/07/19 Python
Python高级特性切片(Slice)操作详解
2018/09/27 Python
python多进程(加入进程池)操作常见案例
2019/10/21 Python
Python响应对象text属性乱码解决方案
2020/03/31 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
2020/04/20 Python
Lululemon加拿大官网:加拿大知名体育服装零售商
2019/04/12 全球购物
德国自然时尚和有机产品购物网站:Waschbär
2019/05/29 全球购物
中软Java笔试题
2012/11/11 面试题
绩效管理实施方案
2014/03/19 职场文书
校车安全责任书
2014/08/25 职场文书
房屋买卖协议书范本
2014/09/27 职场文书
2014年教学管理工作总结
2014/12/02 职场文书
导游词之烟台威海蓬莱
2019/11/14 职场文书
TypeScript中条件类型精读与实践记录
2021/10/05 Javascript
详解Go语言中Get/Post请求测试
2022/06/01 Golang