thinkphp5 (tp5)导入excel

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/viqecel/article/details/81074162

必须要先下载一个插件,即https://github.com/PHPOffice/PHPExcel
解压后,里面有个classes文件夹,我们需要把classes文件夹名修改为为PHPExcel
这里写图片描述

,然后把他复制到根目录中的extend目录下.

这里写图片描述

然后,在控制器中这样引入

import('phpexcel.PHPExcel', EXTEND_PATH);

也可以放在根目录中的/vendor/目录中
引入方法为

vendor("PHPExcel.PHPExcel");

具体案例
数据库
这里写图片描述
这里写图片描述
一,模板中这样写

 <form action="{:url('index/upload_excel')}"  method="post" enctype="multipart/form-data">
            <input name='excel'  type='file'/>
            <input type='submit' value="excel导入,提交"/>
        </form><br>

控制器中这样

   public function upload_excel() {
        $request = \think\Request::instance();
        $file = $request->file('excel');

        $save_path = ROOT_PATH . 'uploads/';
        $info = $file->move($save_path);
        //print_r($info);exit;

        $filename=$save_path . DIRECTORY_SEPARATOR . $info->getSaveName();
          if(file_exists($filename)) {//如果文件存在
          import('phpexcel.PHPExcel', EXTEND_PATH);


    if( strstr($filename,'.xlsx'))
{
 $PHPReader = new \PHPExcel_Reader_Excel2007();
}
else
{
 $PHPReader = new \PHPExcel_Reader_Excel5();
}

           //载入excel文件
           $PHPExcel = $PHPReader->load($filename);
           $sheet = $PHPExcel->getActiveSheet(0);//获得sheet
           $highestRow = $sheet->getHighestRow(); // 取得共有数据数
           $data=$sheet->toArray();

           for($i=0;$i<$highestRow;$i++){
                $user['wxid']=trim($data[$i][0]);//excel中的第一栏
                //$user['name']=$data[$i][1];//第二栏
if(strlen($user['wxid'])==11 && substr($user['wxid'] , 0 , 1) =='1' ){//如果内容为11位的手机号,则入库
    $new_datas[] = $user;
}
}
if(count($new_datas)>0){
     db('data')->insertAll($new_datas, true);
        $this->success('上传成功' . count($new_datas) . '条数据');
}else{
    $this->success('内容为空');
}


     // return $ret;
    }else{
        return array("resultcode" => -5, "resultmsg" => "文件不存在", "data" => null);
    }

    }

请打赏谢谢大佬

猜你喜欢

转载自blog.csdn.net/viqecel/article/details/81074162