zoukankan      html  css  js  c++  java
  • PHP Excel导入数据到MySQL数据库

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

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

    后端接口代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    public function uplExcel(Request $request)
    {
        if (!empty($_FILES['excel']['name'])) {
            $fileName $_FILES['excel']['name'];    //得到文件全名
            $dotArray explode('.'$fileName);    //把文件名安.区分,拆分成数组
            $type end($dotArray);<br>
            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++;<br>
                $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);
        }
    }
  • 相关阅读:
    jquery css 主菜单样式的跳转
    JS学习笔记-事件绑定
    CAS—认证原理
    uva 1203
    简化delegate写法
    使用apache htpasswd生成加密的password文件,并使用.htaccess控制文件夹訪问
    菜鸟学Java(二十)——你知道long和Long有什么差别吗?
    【spring cloud】【spring boot】网管服务-->配置文件添加endpoints.enabled = false,SpringBoot应用监控Actuator使用的安全隐患
    【Devops】【docker】【CI/CD】Jenkins源码管理,设置gitlab上项目的clone地址 + jenkins构建报错:Please make sure you have the correct access rights and the repository exists.
    【Devops】【docker】【CI/CD】jenkins源码管理,添加SSH地址后报错+Jenkins构建报错:Please make sure you have the correct access rights and the repository exists.
  • 原文地址:https://www.cnblogs.com/liliuguang/p/11280347.html
Copyright © 2011-2022 走看看