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作的文本留言本的例子(一)
Oct 09 PHP
php mysql索引问题
Jun 07 PHP
PHP 输出简单动态WAP页面
Jun 09 PHP
PHP获取搜索引擎关键字来源的函数(支持百度和谷歌等搜索引擎)
Oct 03 PHP
PHP 使用MySQL管理Session的回调函数详解
Jun 21 PHP
深入apache配置文件httpd.conf的部分参数说明
Jun 28 PHP
分享下页面关键字抓取components.arrow.com站点代码
Jan 30 PHP
Yii把CGridView文本框换成下拉框的方法
Dec 03 PHP
php定时执行任务设置详解
Feb 06 PHP
Yii2使用$this->context获取当前的Module、Controller(控制器)、Action等
Mar 29 PHP
使用laravel根据用户类型来显示或隐藏字段
Oct 17 PHP
php屏蔽错误及提示的方法
May 10 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
从康盛产品(discuz)提取出来的模板类
2011/06/28 PHP
php中常用的预定义变量小结
2012/05/09 PHP
一个简洁实用的PHP缓存类完整实例
2014/07/26 PHP
PHP反向代理类代码
2014/08/15 PHP
PHP邮件发送类PHPMailer用法实例详解
2014/09/22 PHP
自定义session存储机制避免会话保持问题
2014/10/08 PHP
浅谈php冒泡排序
2014/12/30 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
2017/03/05 PHP
Mac下php 5升级到php 7的步骤详解
2017/04/26 PHP
发布BlueShow v1.0 图片浏览器(类似lightbox)blueshow.js 打包下载
2007/07/21 Javascript
javascript基础知识大集锦(二) 推荐收藏
2011/01/13 Javascript
原生js仿jquery animate动画效果
2016/07/13 Javascript
bootstrap Table的一些小操作
2017/11/01 Javascript
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
使用IronPython把Python脚本集成到.NET程序中的教程
2015/03/31 Python
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
2016/01/20 Python
Python爬取网页中的图片(搜狗图片)详解
2017/03/23 Python
Python学习笔记之if语句的使用示例
2017/10/23 Python
python之DataFrame实现excel合并单元格
2021/02/22 Python
浅谈Django的缓存机制
2018/08/23 Python
Python设计模式之策略模式实例详解
2019/01/21 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
2019/04/11 Python
手机使用python操作图片文件(pydroid3)过程详解
2019/09/25 Python
Python使用sys.exc_info()方法获取异常信息
2020/07/23 Python
Python约瑟夫生者死者小游戏实例讲解
2021/01/04 Python
丝芙兰中国官方商城:SEPHORA中国
2018/01/10 全球购物
垃圾桶标语
2014/06/24 职场文书
建筑施工安全生产责任书
2014/07/22 职场文书
授权委托书格式
2014/07/31 职场文书
二人合伙经营协议书
2014/09/13 职场文书
简单租房协议书
2014/10/21 职场文书
2014年外联部工作总结
2014/11/17 职场文书
员工开除通知书
2015/04/25 职场文书
2016年国庆节67周年活动总结
2016/04/01 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS
MySQL单表千万级数据处理的思路分享
2021/06/05 MySQL