PHP输出Excel PHPExcel的方法

2018-09-07 13:52

阅读:257

  本文实例为大家分享了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中文文档有很多参考资料。

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


评论


亲,登录后才可以留言!