1、前端写法
<input type="file" name="myfile" id="uploadingFiles" value="上传excel文件" />
<input type="text" name="mode" id="uploadingmode" value="" />
<button id="determin" class="btn_right">确定</button>
// //导入excel文件
$("#determin").on('click', function(){
var formData = new FormData();
formData.append("file",$("#uploadingFiles")[0].files[0]);
formData.append("mode",$("#uploadingmode").val())
$.ajax({
url:"importexcel.php",
type:'POST',
async:false,
dataType:'json',
data:formData,
// 告诉jQuery不要去处理发送的数据
processData : false,
// 告诉jQuery不要去设置Content-Type请求头
contentType : false,
beforeSend:function(){
console.log("正在进行,请稍候");
},
success:function(list) {
console.log(list)
location.href ="跳转页面";
},
error:function(){
console.log("请求失败")
}
});
});
2.PHP接收数据
$mode=$_POST['mode'];
$file=$_FILES['file'];//获取文件信息数组
$max_size="20000000"; //最大文件限制(单位:byte)大约20MB
$filename=$file['name']; //取到导入文件的名字
$ftype=strtolower(substr(strrchr($filename,'.'),1));//取到导入文件的后缀名
$arrtype=array('xls','xlsx');//规定的后缀名格式
$tmp_name=$file['tmp_name'];//上传文件的临时目录
if($_SERVER['REQUEST_METHOD']=='POST'){
//判断导入文件是否为空,为空则返回
if(is_uploaded_file($tmp_name)){
//判断文件大小,不合格则返回
if($file['size']>$max_size){
die(json_encode(array('code'=>400,'msg'=>'导入失败,文件太大!!','data'=>-1)));
}
//判断文件格式是否是规定格式,不是则返回
if(!in_array($ftype, $arrtype)){
die(json_encode(array('code'=>401,'msg'=>'导入失败,文件格式有误!!','data'=>-1)));
}
}else{
die(json_encode(array('code'=>402,'msg'=>'导入失败,文件为空!!','data'=>-1)));
}
}
//调用文件上传方法将读取到的Excel表的内容存入$result中
$result = uploadFile($tmp_name,$ftype);
接收到数据后,与数据库数据进行比对,看表单信息是否正确,如果正确则将数据插入数据库,如果信息错误,则返回错误信息
如:die(json_encode(array('code'=>300,'msg'=>'导入失败,代理商匹配有误!!','data'=>-1)));
die(json_encode(array('code'=>200,'msg'=>'导入成功!!','data'=>11)));
3:上传文件的方法
//上传文件的方法
function uploadFile($filetempname,$ftype){
require_once 'Excel/PHPExcel.php';
require_once 'Excel/PHPExcel/IOFactory.php';
$path= "/upload/storage/";//存储路径
if(!file_exists($path)){
mkdir($path,0777,true);
}
$uploadfile =$path.time().$ftype;//文件存放路径
$result=move_uploaded_file($filetempname,$uploadfile);//文件上传
//如果上传文件成功,就执行导入 excel操作
if($result){
try{//1
$inputFileType = PHPExcel_IOFactory::identify($uploadfile);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($uploadfile);
}catch(Exception $e) {
die('加载文件发生错误:"'.pathinfo($uploadfile,PATHINFO_BASENAME).'": '.$e->getMessage());
}
$highestRow = $objPHPExcel->getSheet(0)->getHighestRow(); //取得总行数
$highestColumn = "F";//取得总列数
for($j=0;$j<=$highestRow;$j++){ //行数
for($k='A';$k<=$highestColumn;$k++){ //列数
switch ($k) {
case 'A':
$keys='code';//编号
break;
case 'B':
$keys='model';//型号
break;
case 'C':
$keys='name';//品名
break;
case 'D':
$keys='attribute';//属性
break;
case 'E':
$keys='numbers';//数量
break;
case 'F':
$keys='remark';//备注
break;
default:
$keys='code';
break;
}
$goodsInfo['product'][$j][$keys]=iconv('utf-8','utf-8',$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue());
}
}
unset($result);//一定要unset之后才能进行删除操作,否则请求会被拒绝
unlink($uploadfile); //删除上传的excel文件
$result=$goodsInfo;
}else{
$result=false;
}
return $result;
}