ThinkPHP 文件上传处理

时间:2022-09-24 15:02:30
//上传文件
    public function uploadFile(){
        $upload  = new \Think\Upload();
        $savename = date('Y-m-d').'-'.time();//使用date('Y-m-d H:i:s')作为文件名,因含有冒号,文件就无法保存了,文件名不可含有冒号:
        $upload ->exts = array('xls','xlsx');
        $upload ->rootPath = 'Public/sxwx/policytracking/';
        $upload ->autoSub = false;//是否开启子目录进行保存,默认开启
        $upload ->saveName = $savename;
        $info = $upload ->upload();
        if (!$info) {
           $this->backMsg('0','文件格式有误');
        }
        //导入成功
        vendor("PHPExcel.PHPExcel");
        $excel = new \PHPExcel();
        vendor("PHPExcel.Classes.PHPExcel.Reader.Excel5");
        vendor("PHPExcel.Classes.PHPExcel.Reader.Excel2007");

        $file = 'Public/sxwx/policytracking/'.$info['excel']['savename'];
        
        $phpReader = new \PHPExcel_Reader_Excel5();//xls格式的表格
        $ext = $info['excel']['ext'];//获取文件的后缀名,传过来的字段名为excel
        if ($ext=='xlsx') {
             $phpReader = new \PHPExcel_Reader_Excel2007();//xlsx格式的表格
        }

        $objPHPExcel = $phpReader ->load($file);//读取文件内容

        /*表格格式
            投保单号 保单状态 状态原因 回复处理方式 新契约下发时间 处理完成时间 业务员姓名
        */
       
        $sheet = $objPHPExcel->getSheet(0); 
        // 取得总行数 
        $highestRow = $sheet->getHighestRow();     
        // 取得总列数      
        $highestColumn = $sheet->getHighestColumn(); 
        //循环读取excel文件,读取一条,插入一条
        $data=array();
        //从第三行开始读取数据,第一行名字,第二行字段名
        for($j=3;$j<=$highestRow;$j++){
            //从A列读取数据
            for($k='A';$k<=$highestColumn;$k++){
                // 读取单元格
                $cellVal = $objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue();
                $data[$j][]=$cellVal;
            }
        }
        $stateTab = M('sxwx_policy_state');
        $stateTab ->startTrans();
        foreach ($data as $key => $value) {
            $add['toubao_num'] = $value[0];
            $add['policy_state'] = $value[1];
            $add['state_reason'] = $value[2];
            $add['response_type'] = $value[3];
            $add['assign_time'] = gmdate('Y-m-d',intval(($value[4]-25569)*3600*24));//excel读取日期时间有问题,转化为日期
            $add['completed_time'] = gmdate('Y-m-d',intval(($value[5]-25569)*3600*24));//excel读取日期时间有问题,转化为日期
            $add['record_name'] = $value[6];
            $exist = $stateTab ->where($add) ->find();
            if (!$exist) {
                $res[] = $stateTab ->add($add,array(),true);
            }
        }
        foreach ($res as $key => $value) {
            if ($value === false) {
                $stateTab ->rollback();
            }
        }
        $stateTab ->commit();
        $this -> backMsg('1','数据批量导入成功');
    }

private function backMsg($code,$desc){
        $ret['code'] = $cdoe;
        $ret['desc'] = $desc; 
        $this ->ajaxReturn($ret);        
}
$add['assign_time'] = gmdate('Y-m-d',intval(($value[4]-25569)*3600*24));//excel读取日期时间有问题,转化为日期
$add['completed_time'] = gmdate('Y-m-d',intval(($value[5]-25569)*3600*24));//excel读取日期时间有问题,转化为日期