侯体宗的博客
  • 首页
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

PHP输出Excel PHPExcel的方法

php  /  管理员 发布于 7年前   222

本文实例为大家分享了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中。

/*  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中文文档有很多参考资料。

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

您可能感兴趣的文章:

  • 利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
  • PHPExcel读取Excel文件的实现代码
  • phpExcel中文帮助手册之常用功能指南
  • ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
  • php中使用PHPExcel读写excel(xls)文件的方法
  • phpExcel导出大量数据出现内存溢出错误的解决方法
  • 基于PHPExcel的常用方法总结
  • 使用phpexcel类实现excel导入mysql数据库功能(实例代码)
  • PHPExcel简单读取excel文件示例
  • php excel类 phpExcel使用方法介绍


  • 上一条:
    php实现等比例压缩图片
    下一条:
    php支付宝APP支付功能
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 用Time Warden监控PHP中的代码处理时间(0个评论)
    • 在PHP中使用array_pop + yield实现读取超大型目录功能示例(0个评论)
    • Property Hooks RFC在PHP 8.4中越来越接近现实(0个评论)
    • 近期文章
    • 在windows10中升级go版本至1.24后LiteIDE的Ctrl+左击无法跳转问题解决方案(0个评论)
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(95个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-11
    • 2017-12
    • 2018-01
    • 2018-02
    • 2018-03
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-09
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    • 2024-09
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客