thinkphp5 excel文件上传并存入数据库功能

需要引入PHPExcel 的第三方库 可以在百度搜索下 并且在根目录下引入该模块,也可以放在根目录vendor目录下 使用这个方法 vendor("PHPExcel.PHPExcel");

    //上传excel
    public function uploadExcel(){
        
        $request = \think\Request::instance();

        //引入导入excel第三方库
        vendor("PHPExcel.PHPExcel"); 
        $file = request()->file('excel');

         //数据为空返回错误
         if(empty($file)){
            $this->error("导入数据失败");
        }

        $info = $file->validate(['ext' => 'xlsx,xls'])->move(ROOT_PATH . 'public' . DS . 'uploads');
        //获取上传到后台的文件名
        $fileName = $info->getSaveName();
        //获取文件路径
        $filePath = Env::get('root_path').'public'.DIRECTORY_SEPARATOR.'uploads'.DIRECTORY_SEPARATOR.$fileName;
        //获取文件后缀
        $suffix = $info->getExtension();
        //判断哪种类型
        if($suffix=="xlsx"){
            $reader = \PHPExcel_IOFactory::createReader('Excel2007');
        }else{
            $reader = PHPExcel_IOFactory::createReader('Excel5'); 
        }

        //载入excel文件
        $excel = $reader->load("$filePath",$encode = 'utf-8');
        //读取第一张表
        $sheet = $excel->getSheet(0);
        //获取总行数
        $row_num = $sheet->getHighestRow();
        //获取总列数
        $col_num = $sheet->getHighestColumn();
        $data = []; //数组形式获取表格数据

        for ($i=2; $i <=$row_num; $i++) { 
            // var_dump($sheet->getCell("A".$i)->getValue());exit;
            $data['kuaidi_sn']   = $sheet->getCell("A".$i)->getValue();
            $data['order_sn'] = $sheet->getCell("G".$i)->getValue();
            $data['kuaidi_name']     = $excel->getActiveSheet()->getCell("H".$i)->getValue();
            $data['kuaidi_code']     = $excel->getActiveSheet()->getCell("I".$i)->getValue();
            $data['status']     = 0;
            
            $datas = M("all_order")->where([
                "order_sn" => $data['order_sn'],
            ])->find();
            if(!$datas){
                M("all_order")->add($data);
            }
        }
        $this->success('导入成功!');
    }

需要引入
use think\Request;
use think\Env;
这两个内置的模块

你可能感兴趣的:(thinkphp5 excel文件上传并存入数据库功能)