本文实例为大家分享了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("	",$header);  $strexport = $teble_header."";  foreach ($list as $row){   foreach($index as $val){    $strexport.=$row[$val]."	";    }   $strexport.="";  }  $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 = [   [],  //空出第一行,打印出的效果将空出第一行   ["","信息"],  //空出第一列,打印出的效果将空出第一列   ["","姓名name","年龄","性别","分数","年级"],  //空出第一列,*这里的是为了*配合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()方法选中范围,同时要在内容中添加"",而且该内容要用双引号才会解析  $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中文文档有很多参考资料。

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