PHP、TP5上传并获取Excel内容(包括动态列的获取)

1 篇文章 0 订阅
该博客介绍了如何在PHP环境中,结合ThinkPHP5框架,实现Excel文件的上传,并进行内容解析,特别是针对动态列的数据获取。通过检查文件后缀、移动上传文件到指定路径,然后利用PHPExcel库读取Excel内容,处理B列之后的动态列数据,去除特殊字符,最终将数据整理为数组。整个过程展示了如何处理动态列和确保数据的正确性。
摘要由CSDN通过智能技术生成

PHP、TP5上传并获取Excel内容(包括动态列的获取)

public function upload(){
	$res=$this->request->param();					//TP5获取前端传输内容
    header("Content-type:text/html;charset=utf-8");
	vendor("PHPExcel.Classes.PHPExcel");
	vendor("PHPExcel.Classes.PHPExcel.IOFactory");
    $name=$_FILES['file']['name'];					//名字
	$suffixName=explode('.',$name)[1];				//后缀名
    $filePath='public/uploads/'.$name;				//文件存储路径
    if($suffixName=="xls"||$suffixName=="xlsx"){	//判断上传的文件是否是excel
		if(is_uploaded_file($_FILES["file"]["tmp_name"])){
			$move=move_uploaded_file($_FILES["file"]["tmp_name"],$filePath);
			if ($move===true){
				//调用解析方法,返回数组
				$ExcleArr=$this->analysisExcel($filePath,$res['order']);
				if($ExcleArr==1){
					$req['code']=1;
				}else{
					$req['code']=0;
				}
			}else{
				$req['code']=0;
			}
		}else{
			$req['code']=0;
		}
	}else{
		$req['code']=0;
	}
	return json($req);
}
function analysisExcel($filePath,$order){
	$objReader='';
	$file_type=explode('.',$filePath)[1];	//获取文件后缀名
	//根据上传类型做不同处理创建读取实例
	if($file_type=='xls'){
		$objReader=\PHPExcel_IOFactory::createReader('Excel5');
	}
	if($file_type=='xlsx'){
		$objReader=new \PHPExcel_Reader_Excel2007();
	}
	$objPHPExcel=$objReader->load($filePath,$encode='utf-8');	//加载文件
	$sheet=$objPHPExcel->getSheet(0);			//取得sheet(0)表
	$highestRow=$sheet->getHighestRow();		//取得总行数
	$highestColumn=$sheet->getHighestColumn();	//取得总列数
	$data=[];
    //获取特殊符号
	$regex=" /\ |\/|\~|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\_|\+|\{|\}|\:|\<|\>|\?|\[|\]|\,|\.|\/|\;|\'|\`|\-|\=|\\\|\|/";
    //循环获取excel表格内容
	for($i=3;$i<=$highestRow;$i++){
        //B列过后动态列获取内容所用
	   	$zimu="B";
        $maga=array(array("name"=>"你好"),array("name"=>"李焕英"));
        //去除表格特殊符号获取内容
		$data[$i]['company']=preg_replace($regex,'',$objPHPExcel->getActiveSheet()->getCell("A".$i)->getValue());
        //字母转换大写并去除特殊符号
		$data[$i]['companyid']=strtoupper(preg_replace($regex,'',$objPHPExcel->getActiveSheet()->getCell("B".$i)->getValue()));
        //获取B列以后动态列的内容
		foreach($maga as $k=>$v){
			$zimu++;
            //去除表格中文并去除特殊符号
			$data[$i][$v['id']]=preg_replace('/([\x80-\xff]*)/i','',preg_replace($regex,'',$objPHPExcel->getActiveSheet()->getCell($zimu.$i)->getValue()));
		}
	}
    if(!empty($data)){
        $req=1;
    }else{
        $req=2;
    }
	return $req;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值