PHP、TP5导出excel,动态列名的处理

在下载excel模板的时候,会遇到需要根据查询的数据动态添加excel列名的情况,用模板表的最后的列往后做循环可以做到,但是这个方法也有很大的局限性,如果列有ABC三列,可以在后面动态添加DEF等列,不能在ABC的中间动态添加列,只能在最后添加。

public function download(){
	$res=$this->request->param();					//TP5获取前端传输内容
	$zimu="";
	$maga="";
	for($z="C";$z<="Z";$z++){
		$zimu[]=$z;
	}
	$aoo=array_slice($zimu,0,21);
    $maga=array(array("name"=>"你好"),array("name"=>"李焕英"));
    //读取Excel模板
    vendor("PHPExcel.Classes.PHPExcel");
	vendor("PHPExcel.Classes.PHPExcel.IOFactory");
	ini_set("memory_limit", "13312M");
	set_time_limit(0);
	$dir='public/uploads/';					//模板存放目录
	$templateName='fapiao.xls';				//模板表
	$path=dirname(__FILE__);				//找到当前脚本所在路径
	$PHPExcel=new \PHPExcel();
	$PHPReader=new \PHPExcel_Reader_Excel5();
	$PHPExcel=$PHPReader->load($dir.$templateName);
	$currentSheet=$PHPExcel->getSheet(0);
    //根据$maga的内容给模板添加动态列名
    if(empty($maga)){
		$currentSheet->setCellValue('C2',"是吗");
	}else{
		for($i=0;$i<count($maga);$i++){
	        $currentSheet->setCellValue($aoo[$i].'2',$maga[$i]."我不信");
        }
	}
    //下载处理过后的模板Excel
	ob_clean();
	ob_start();
	$filename='fapiao.xls';
	$objWriteHTML = new \PHPExcel_Writer_Excel5($PHPExcel);//输出EXCLl格式的对象
	header("Content-type: application/octet-stream;charset=utf-8");
	header('Content-Type: application/vnd.ms-excel');
	header('Content-Disposition: attachment;filename='.$filename);//日期为文件名后缀
	header('Cache-Control: max-age=0');
	$objWriteHTML->save("php://output");
	ob_end_flush();
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值