Thinkphp PHPExcel批量导入数据到数据库

本文介绍如何使用PHPExcel库将Excel数据导入ThinkPHP项目的数据库中。具体步骤包括配置文件路径、实现文件上传、解析Excel文件及数据读取,并最终完成数据的数据库插入操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.首先把PHPExcel 文件夹复制到thinkphp/library/vendor目录下,

1.1 excel 文件数据格式如下:

  
ID姓名密码年龄地址
1xhz112320浙江省杭州市余杭区
2xhz212320浙江省杭州市余杭区
3xhz312320浙江省杭州市余杭区
4xhz412320浙江省杭州市余杭区
5xhz512320浙江省杭州市余杭区
6xhz612320浙江省杭州市余杭区
7xhz712320浙江省杭州市余杭区
8xhz812320浙江省杭州市余杭区
9xhz912320浙江省杭州市余杭区
10xhz1012320浙江省杭州市余杭区

1.2控制器的插入数据库的方法如下:

function insertToDb(){
        if (!empty($_FILES)) {
            $upload = new \Think\Upload();// 实例化上传类
            $filepath='./Upload/Excle/';
            $upload->exts = array('xlsx','xls');   // 设置附件上传类型
            $upload->rootPath  = $filepath;     // 设置附件上传根目录
            $upload->autoSub   =  false;        //自动使用子目录保存上传文件

            if (!$info=$upload->upload()) {
                $this->error($upload->getError());
            }
            foreach ($info as $k => $v) {
                unset($info);
                $info[0]=$v;
                $info[0]['savepath']=$filepath;
            }

            vendor("PHPExcel.PHPExcel");
            vendor("PHPExcel.PHPExcel.IOFactory");

            $file_name=$info[0]['savepath'].$info[0]['savename'];
            $extension = strtolower( pathinfo($file_name, PATHINFO_EXTENSION) );
            if ($extension == 'xlsx') {
                $objReader =\PHPExcel_IOFactory::createReader('Excel2007');
                $objPHPExcel =$objReader->load($file_name, $encode = 'utf-8');
            } else if ($extension == 'xls'){
                $objReader =\PHPExcel_IOFactory::createReader('Excel5');
                $objPHPExcel =$objReader->load($file_name, $encode = 'utf-8');
            }
            $sheet = $objPHPExcel->getSheet(0);
            $highestRow = $sheet->getHighestRow(); // 取得总行数
//            $highestColumn = $sheet->getHighestColumn(); // 取得总列数
            $j=0;
            for($i=2;$i<=$highestRow;$i++){
                $data['username']= $objPHPExcel->getActiveSheet()->getCell("B".$i)->getValue();
                $data['password']= $objPHPExcel->getActiveSheet()->getCell("C".$i)->getValue();
                $data['age']= $objPHPExcel->getActiveSheet()->getCell("D".$i)->getValue();
                $data['address']= $objPHPExcel->getActiveSheet()->getCell("E".$i)->getValue();
                if(D('admin')->where("id='".$data['id']."'")->find()){
                    $this->error("有相同的ID");
                }else{
                    M('admin')->add($data);
                    $j++;
                }
            }
            $this->success('导入成功!本次导入数量:'.$j);
        }else{
            $this->display();
        }
    }

1.3 数据库数据如下:

271 xhz1 123 20 浙江省杭州市余杭区
272 xhz2 123 20 浙江省杭州市余杭区
273 xhz3 123 20 浙江省杭州市余杭区
274 xhz4 123 20 浙江省杭州市余杭区
275 xhz5 123 20 浙江省杭州市余杭区
276 xhz6 123 20 浙江省杭州市余杭区
277 xhz7 123 20 浙江省杭州市余杭区
278 xhz8 123 20 浙江省杭州市余杭区
279 xhz9 123 20 浙江省杭州市余杭区
280 xhz10 123 20 浙江省杭州市余杭区


2. 这样就可以导入到数据库了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值