• 技术文章 >后端开发 >php教程

    PHP Excel导入数据到MySQL数据库的方法

    不言不言2019-02-22 15:13:51原创8925
    这篇文章主要介绍了关于PHP Excel导入数据到MySQL数据库的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

    相关mysql视频教程推荐:《mysql教程

    数据导出已经有了,怎么能没有数据导入呢,同样使用TP5框架,首先需要下载phpexcel.zip,放到第三方类库目录vendor目录下,然后有一个页面可以让你选择要导入的Excel文件,然后点击导入按钮调用接口:

    我的模板内的数据如下图:

    后端接口代码如下:

        public function uplExcel(Request $request)
        {
            if (!empty($_FILES['excel']['name'])) {
                $fileName = $_FILES['excel']['name'];    //得到文件全名
                $dotArray = explode('.', $fileName);    //把文件名安.区分,拆分成数组
                $type = end($dotArray);
    
                if ($type != "xls" && $type != "xlsx") {
                    $ret['res'] = "0";
                    $ret['msg'] = "不是Excel文件,请重新上传!";
                    return json_encode($ret);
                }
    
                //取数组最后一个元素,得到文件类型
                $uploaddir = "../uploads2/" . date("Y-m-d") . '/';//设置文件保存目录 注意包含
                if (!file_exists($uploaddir)) {
                    mkdir($uploaddir, 0777, true);
                }
    
                $path = $uploaddir . md5(uniqid(rand())) . '.' . $type; //产生随机文件名
                //$path = "images/".$fileName; //客户端上传的文件名;
                //下面必须是tmp_name 因为是从临时文件夹中移动
                move_uploaded_file($_FILES['excel']['tmp_name'], $path); //从服务器临时文件拷贝到相应的文件夹下
    
                $file_path = $path;
                if (!file_exists($path)) {
                    $ret['res'] = "0";
                    $ret['msg'] = "上传文件丢失!" . $_FILES['excel']['error'];
                    return json_encode($ret);
                }
    
                //文件的扩展名
                $ext = strtolower(pathinfo($path, PATHINFO_EXTENSION));
                if ($ext == 'xlsx') {
                    $objReader = \PHPExcel_IOFactory::createReader('Excel2007');
                    $objPHPExcel = $objReader->load($file_path, 'utf-8');
                } elseif ($ext == 'xls') {
                    $objReader = \PHPExcel_IOFactory::createReader('Excel5');
                    $objPHPExcel = $objReader->load($file_path, 'utf-8');
                }
    
                $sheet = $objPHPExcel->getSheet(0);
                $highestRow = $sheet->getHighestRow(); // 取得总行数
                $highestColumn = $sheet->getHighestColumn(); // 取得总列数
                $ar = array();
                $i = 0;
                $importRows = 0;
                for ($j = 2; $j <= $highestRow; $j++) {
                    $importRows++;
    
                    $realName = (string)$objPHPExcel->getActiveSheet()->getCell("A$j")->getValue();//需要导入的realName
                    $phone = (string)$objPHPExcel->getActiveSheet()->getCell("B$j")->getValue();   //需要导入的phone
                    $company = (string)$objPHPExcel->getActiveSheet()->getCell("C$j")->getValue(); //需要导入的company
                    $job = (string)$objPHPExcel->getActiveSheet()->getCell("D$j")->getValue();     //需要导入的job
                    $email = (string)$objPHPExcel->getActiveSheet()->getCell("E$j")->getValue();   //需要导入的email
                    $ret['mdata'] = $this->addMemb($phone, $realName, $company, $job, $email);//这里就是我的数据库添加操作定义的一个方法啦,对应替换为自己的
    
                    if ($ret['mdata'] && !is_Bool($ret['mdata'])) {
                        $ar[$i] = $ret['mdata'];
                        $i++;
                    }
                }
                if ($i > 0) {
                    $ret['res'] = "0";
                    $ret['errNum'] = $i;
                    $ret['allNum'] = $importRows;
                    $ret['sucNum'] = $importRows - $i;
                    $ret['mdata'] = $ar;
                    $ret['msg'] = "导入完毕!";
                    return json_encode($ret);
                }
                $ret['res'] = "1";
                $ret['allNum'] = $importRows;
                $ret['errNum'] = 0;
                $ret['sucNum'] = $importRows;
                $ret['mdata'] = "导入成功!";
                return json_encode($ret);
            } else {
                $ret['res'] = "0";
                $ret['msg'] = "上传文件失败!";
                return json_encode($ret);
            }
        }

    以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

    相关推荐:

    PHP让数组中有相同值的组成新的数组实例讲解

    PHP中类静态调用和范围解析操作符之间的区别

    以上就是PHP Excel导入数据到MySQL数据库的方法的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    上一篇:wordpress添加文章固定字段的介绍 下一篇:PHP7.1中使用openssl替换mcrypt 的介绍
    大前端线上培训班

    相关文章推荐

    • 怎样去搞定PHP类的继承?(总结分享)• 带你分清类中的构造函数与析构函数• 你知道这个PHP命令行选项解析库(pflag)吗?• PHP中如何才能将时间日期格式化?怎么计算时间差?• 一定搞得懂PHP中如何添加图片水印

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网