1.首先把PHPExcel 文件夹复制到thinkphp/library/vendor目录下,
1.1 excel 文件数据格式如下:
ID | 姓名 | 密码 | 年龄 | 地址 |
1 | xhz1 | 123 | 20 | 浙江省杭州市余杭区 |
2 | xhz2 | 123 | 20 | 浙江省杭州市余杭区 |
3 | xhz3 | 123 | 20 | 浙江省杭州市余杭区 |
4 | xhz4 | 123 | 20 | 浙江省杭州市余杭区 |
5 | xhz5 | 123 | 20 | 浙江省杭州市余杭区 |
6 | xhz6 | 123 | 20 | 浙江省杭州市余杭区 |
7 | xhz7 | 123 | 20 | 浙江省杭州市余杭区 |
8 | xhz8 | 123 | 20 | 浙江省杭州市余杭区 |
9 | xhz9 | 123 | 20 | 浙江省杭州市余杭区 |
10 | xhz10 | 123 | 20 | 浙江省杭州市余杭区 |
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
浙江省杭州市余杭区