thinkphp---Excel导入!

在做项目的时候,很多时候会遇到需要将excel导入到数据库的操作:

需要用到Excel类:

下载地址:

https://gitee.com/meiyouzhanghao/excel

位置:Thinkphp / Library / Org / Util 

获取Excel 方法:

//获取excel文件、读取数据方法  
public function getdata($file_name,$exts='xls'){            
    //导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入  
    import("Org.Util.PHPExcel", '', '.php');  
    //创建PHPExcel对象,注意,不能少了\  
    $PHPExcel=new \PHPExcel();
    import("Org.Util.PHPExcel.Reader.Excel5",'','.php');  
    $PHPReader=new \PHPExcel_Reader_Excel5();  
    //载入文件  
    $PHPExcel=$PHPReader->load($file_name);  
    //获取表中的第一个工作表,如果要获取第二个,把0改为1,依次类推  
    $currentSheet = $PHPExcel->getSheet(0);  
    //获取总列数  
    $allColumn = $currentSheet->getHighestColumn();  
    //获取总行数  
    $allRow = $currentSheet->getHighestRow();  
    $excelData = array();   
    //循环获取表中的数据,$currentRow表示当前行,从哪行开始读取数据,索引值从0开始  
    for($currentRow = 2; $currentRow <= $allRow; $currentRow ++){  
        //从哪列开始,A表示第一列  
        for($currentColumn='B';$currentColumn<=$allColumn;$currentColumn++){  
            //数据坐标  
            $address=$currentColumn.$currentRow;  
            //读取到的数据,保存到数组$arr中  
             $excelData[$currentRow][$currentColumn] = $currentSheet-> getCell($address)-> getValue();
        }
    }  
    return $excelData;
}

导入操作:

public function test(){
  $filePath = "./Uploads/201111.xls";
  $data = $this->getdata($filePath);
  pd($data); // 得到数据 批量循环插入
  $UserDB = M('user');
  foreach($data as $k=>$v){
    $data = array();
    $data['name'] = $v['B'];
    $data['age'] = $v['C'];
    $data['city'] = $v['D'];
    // $UserDB->add($data);
  }
}

需要导入的Excle.xls

上面 $data = $this->getdata($filePath); 获取的数据:

参考:导入操作

//导入Excel方法操作  
public function importExp(){  
    header("Content-type: text/html;charset=utf-8");//设置页面内容是html编码格式是utf-8  
    $m=D("Webinfo");//连接数据表 
    $cell=array();    
    //导入Excel前要上传Excel文件到项目文件夹,如果成功进行,如果失败提示错误信息  
    //I('post.ExcelURL','','htmlspecialchars')为获取上传控件传来的文件名称  
    if(I('post.ExcelURL','','htmlspecialchars')!=""){  
        $uploads="Uploads";  
        $upload = new \Think\Upload();// 实例化上传类  
        $upload->maxSize   =     5242880 ;// 设置附件上传大小  
        $upload->exts      =     array('xlsx','xls');// 设置附件上传类型  
        $upload->rootPath  =      './'.$uploads.'/'; // 设置附件上传根目录  
        $upload->subName  = array('date','Ym');  
        // 上传单个文件   
        $info   =   $upload->uploadOne($_FILES['excel']);  
          
        if(!$info) {// 上传错误提示错误信息  
            $this->error($upload->getError());  
        }else{  
            //上传Excel成功  
            $exts = $info['ext'];  
                $file_name=$uploads.'/'.$info['savepath'].$info['savename'];  
                $res=$this->getdata($file_name,$exts);  
              
            //循环读取每行数据,进行写入数据库  
            foreach ( $res as $k => $v )  
            {  
                if ($k != 0)   
                {     
                    //获取数据库中的最大ID自增加1  
                    $m->create();  
                    $id=$m->max('ID');  
                      
                    if($id==0||$id==NULL||$id==""){  
                        $id=1;  
                    }  
                    else  
                    {  
                        $id=$id+1;  
                    }  
                    //读取数据后赋给数组data  
                    $data['ID']=$id;  
                    $data ['Name'] = $v [B];  
                    $data ['Site'] =  $v [C];  

                    $result = $m->add($data);//添加操作  
                      
                }  
            }  
              
            if($result!=0){  
                  
                $this->success('网站数据导入成功');  
                  
            }else{  
                  
                $this->error('网站数据导入失败');  
                  
            }  
        }  
    }  
    else  
    {  
        $this->error("请选择上传的文件");  
    }  
}

猜你喜欢

转载自www.cnblogs.com/e0yu/p/9087766.html