使用PHPExcel将xls/xlsx文件导入MySQL

前端源码:

<form method="post" action="控制器地址" name="excel" enctype="multipart/form-data">
        <input type="file" name="excel"><br/>
        <button type="sumbit">导入</button>
</form>

控制器:

     /**
	 * EXCEL文件导入
	 */
	public function inexcel(){
		if(!IS_POST){
                    exit("bad request");
        	}
        	$upload = new \Think\Upload();// 实例化上传类
        	$upload->exts      =     array('xls', 'xlsx');// 设置附件上传类型
        	$upload->rootPath  =      './Upload'; // 设置附件上传目录
        	$upload->savePath  =     '/excel/'; // 设置附件上传(子)目录
        	$info   =   $upload->upload();
        	$file = $info['excel']['savepath'].$info['excel']['savename'];
        	if ($file == NULL) {
          	  echo "文件错误,请返回修改";
          	  exit();
        	}

        	import("Org.Util.PHPExcel");
		import("Org.Util.PHPExcel.Writer.Excel5");
		import("Org.Util.PHPExcel.IOFactory.php");
		import("Org.Util.PHPExcel.Style.NumberFormat.php");
		import("Org.Util.PHPExcel.Cell.DataType.php");
		//引入PHPExcel类库
        	require_once 'Thinkphp/Library/Org/Util/PHPExcel/IOFactory.php';

        	//获取上传的excel文件
		$objPHPExcel = \PHPExcel_IOFactory::load("Upload/$file");

		$objPHPExcel->setActiveSheetIndex(0);
		$sheet0=$objPHPExcel->getSheet(0);//获取Excel第0张表(Sheet1)

		$rowCount=$sheet0->getHighestRow();//excel行数

        	$data=array();
        	for ($i = 2; $i <= $rowCount; $i++){//第一行表头不输入
        		$item['name']=$objPHPExcel->getActiveSheet()->getCell('F'.$i)->getValue();//F列 姓名
			$item['sex']='未知';//性别未定义
        		$item['nation']=$objPHPExcel->getActiveSheet()->getCell('G'.$i)->getValue();//G列 民族
        		$item['place']=$objPHPExcel->getActiveSheet()->getCell('I'.$i)->getValue();//I列 户籍所在地
	          	$item['idnum']=$objPHPExcel->getActiveSheet()->getCell('H'.$i)->getValue();//H列 身份证号
	          	$item['email']=$objPHPExcel->getActiveSheet()->getCell('K'.$i)->getValue();//K列 邮箱
	          	$item['phone1']=$objPHPExcel->getActiveSheet()->getCell('L'.$i)->getValue();//L列 电话1
	          	$item['phone2']=$objPHPExcel->getActiveSheet()->getCell('M'.$i)->getValue();//M列 电话2
	          	$item['school']=$objPHPExcel->getActiveSheet()->getCell('O'.$i)->getValue();//O列 初中毕业学校
	          	$item['class']=$objPHPExcel->getActiveSheet()->getCell('P'.$i)->getValue();//P列 毕业班级
	          	$item['peoplenum']=$objPHPExcel->getActiveSheet()->getCell('Q'.$i)->getValue();//Q列 初中毕业学生人数
	          	$item['introduce']=$objPHPExcel->getActiveSheet()->getCell('R'.$i)->getValue();//R列 补充说明

            	$data[]=$item;
        	}

        	$success=0;
        	$error=0;
        	$sum=count($data);
        	foreach($data as $k=>$v){
            	if(M('student')->data($v)->add()){//在student表中生成数据
                	$success++;
            	}else {
                	$error++;
            	}
        	}

        	echo "总{$sum}条学生信息,成功{$success}条,失败{$error}条。";

	}

}

yangshaoyang.cn

橙色时光
请先登录后发表评论
  • 最新评论
  • 总共0条评论