学无先后,达者为师

网站首页 编程语言 正文

基于TP5框架的excel导入功能

作者:smallmww 更新时间: 2023-08-13 编程语言

准备工作:首先需要下载PHPExcel文件放入vendor目录下。

导入功能控制器类对应的方法的书写如下所示:

public function submitData()

    {

        if (request()->isPost()) {

            require "../vendor/PHPExcel/Classes/PHPExcel.php"; //引入PHPExcel文件路径并运行文件,当文件报错时会产生一个致命错误并且终止执行,

            // vendor("PHPExcel.PHPExcel"); //处理Excel文件请求

            $file = request()->file('file');  //加载excel文件

            if (is_null($file)) {

                return $this->success("上传文件不能为空");  

            }

            $info = $file->validate(['size' => 1567800, 'ext' => 'xlsx,xls,csv'])->move(ROOT_PATH . 'public' . DS . 'uploads' . DS . 'excel');   //validate()用于表单验证,这里验证文件后缀名称,尺寸大小


            if ($info) {

                $exclePath = $info->getSaveName(); //获取文件名

                $file_name = ROOT_PATH . 'public' . DS . 'uploads' . DS . 'excel' . DS . $exclePath; //上传文件的地址

                // $objReader = \PHPExcel_IOFactory::createReader('Excel2007');

                // $obj_PHPExcel = $objReader->load($file_name,);//加载文件内容,编码utf-8

                $obj_PHPExcel = \PHPExcel_IOFactory::load($file_name);//$encode='utf-8' //加载文件内容,编码utf-8  

                echo "<pre>";

                $excel_array = $obj_PHPExcel->getsheet(0)->toArray(); //转换为数组格式

                array_shift($excel_array); //删除第一个数组(标题);

                //逻辑代码

                $data = [];

                $i = 0;

                foreach ($excel_array as $k => $v) {    //遍历循环excel对应的数据的数组每一列的内容

                    $data[$k]['name'] = $v[1];

                    $data[$k]['gender']=$v[2];

                    if($v[3]=='一班'){

                        $classId=1;

                    }else if($v[3]=='二班'){

                        $classId=2;

                    }else if($v[3]=='三班'){

                        $classId=3;

                    }else{

                        $classId=Null;

                    }

                    $data[$k]['class_id']=$classId;

                    // if($request->ext($v[4])=='jpg'){

                    //     echo 'ext: ' . $request->ext($v[4]);

                    // }

                   

                    $data[$k]['photo']=$v[4];

                    $i++;

                }

                // exit;

                var_dump($data);

                $success=0;

                for($j=0;$j<$i;$j++){

                    $sql = db('student')->insert($data[$j]); //批量插入数据

                    var_dump($sql);

                    if($sql){

                       $success++;

                    }

                }

                // $success = db('student')->insertAll($data); //批量插入所有数据

                $error = $i - $success;

                echo "总{$i}条,成功{$success}条,失败{$error}条。";

            }else{

                // 上传失败获取错误信息

                echo $file->getError();

            }

        }

    }

里面一些信息需要进行一下修改。

原文链接:https://blog.csdn.net/smallmww/article/details/129338936

  • 上一篇:没有了
  • 下一篇:没有了
栏目分类
最近更新