PHP实现excel导入

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;   

}

转载于:https://my.oschina.net/lixiaoting/blog/2988600

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值