本文实例为大家分享了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中文文档有很多参考资料。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】