PHP 上传EXCEL表格,记录到数据表

PHP

public function importexcel(){
        $param = input();
        
        $root = str_replace('/thinkphp','',IA_ROOT);
        require($root.'/vendor/PHPExcel/PHPExcel.php');//引用你自己路径下的文件
        
        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文件,请重新上传!";
                $this->error('不是Excel文件,请重新上传!','/admin/feedback/manageFeedback/ctid/75',1);
            }
            
            //取数组最后一个元素,得到文件类型
            $uploaddir = iconv("UTF-8", "GBK", $root."/excel/".date('Ymd').'/');
            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'];
                $this->error("上传文件丢失!" . $_FILES['excel']['error'],'/admin/feedback/manageFeedback/ctid/75',1);
            }
            
            //文件的扩展名
            $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++;
                $number = (string)$objPHPExcel->getActiveSheet()->getCell("A$j")->getValue();//需要导入的number
                $data['number'] = $number;
                $ret['mdata'] = Db::name('product_number')->insert($data);
     
                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'] = "导入完毕!";
                echo '正在导入...';
                // return json_encode($ret);
            }
            $this->success("上传文件完成!" ,'/admin/feedback/manageFeedback/ctid/75',1);
        }else {
            $ret['res'] = "0";
            $ret['msg'] = "上传文件失败!";
            $this->error("上传文件丢失!" ,'/admin/feedback/manageFeedback/ctid/75',1);
            // return json_encode($ret);
        }
        
    }

前端:

<form action="/admin/feedback/importexcel" method="post" enctype="multipart/form-data">
     <input type="file" name="excel" value="导入excel" datatype="*4-50"/>
     <input type="submit" name="submit" id="submit" value="提交" />
 </form>	

excel表格样例:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值