您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
thinkphp3.1.3整合excel导出功能
发布时间:2017-07-24 21:15:34编辑:雪饮阅读()
控制器中示例代码如下:
//订单导出
public function orderExport(){
$m=M("s_order");
$list=$m->select();
//表头
$letter=$this->excelHeader($list);
//真正表头
$tableheader=array();
foreach($list[0] as $key=>$val){
array_push($tableheader,$key);
}
//数据行
$data=$this->excelData($list);
$this->excelOutput($letter,$data,$tableheader);
}
//动态生成execel表头
public function excelHeader($list){
//获取表头键名数组
$keyArr=array();
foreach($list[0] as $key=>$val){
array_push($keyArr,$key);
}
//生成表头(最大支持双字母表头,双表头数量一般足够大了)
$zm26=array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
$tableheader=array();
foreach($keyArr as $key=>$val){
if($key>25){
$key1=floor($key/25)-1;
$key2=($key%25)-1;
$key12=$zm26[$key1].$zm26[$key2];
array_push($tableheader,$key12);
}
else{array_push($tableheader,$zm26[$key]);}
}
return $tableheader;
}
//生成excel数据行($getData:thinkphp获取的数据结果集,也是一个数组)
public function excelData($getData){
$data=array();
foreach($getData as $key=>$val){
$tmpArr=array();
foreach($val as $xk=>$xv){
if(!$xv){$xv="Null";}
array_push($tmpArr,$xv);
}
array_push($data,$tmpArr);
}
return $data;
}
//正式导出excel($letter:表头如ABCD,$data:数据行,$tableheader:真正表头)
public function excelOutput($letter,$data,$tableheader){
header("Content-Type:application/vnd.ms-excel;charset=UTF-8");
$excel = new PHPExcel();
//填充表头信息
for($i = 0;$i < count($tableheader);$i++) {
$excel->getActiveSheet()->setCellValue("$letter[$i]1","$tableheader[$i]");
}
//填充表格信息
for ($i = 2;$i <= count($data) + 1;$i++) {
$j = 0;
foreach ($data[$i - 2] as $key=>$value) {
$excel->getActiveSheet()->setCellValue("$letter[$j]$i","$value");
$j++;
}
}
$fileName=date("Y-m-d_H-i-s",time());
$fileName="excel_".$fileName.".xls";
//创建Excel输入对象
$write = new PHPExcel_Writer_Excel5($excel);
header("Pragma: public");
header("Expires: 0");
header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
header("Content-Type:application/force-download");
header("Content-Type:application/vnd.ms-excel;charset=UTF-8");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");;
header("Content-Disposition:attachment;filename='".$fileName."'");
header("Content-Transfer-Encoding:binary");
$write->save('php://output');
}
结合excel的demo源码可以理解的更透彻
关键字词:thinkphp3.1.3,excel,导出