在做项目的时候,很多时候会遇到需要将excel导入到数据库的操作:
需要用到Excel类:
下载地址:
https://gitee.com/meiyouzhanghao/excel
位置:Thinkphp / Library / Org / Util
获取Excel 方法:
//获取excel文件、读取数据方法 public function getdata($file_name,$exts='xls'){ //导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入 import("Org.Util.PHPExcel", '', '.php'); //创建PHPExcel对象,注意,不能少了\ $PHPExcel=new \PHPExcel(); import("Org.Util.PHPExcel.Reader.Excel5",'','.php'); $PHPReader=new \PHPExcel_Reader_Excel5(); //载入文件 $PHPExcel=$PHPReader->load($file_name); //获取表中的第一个工作表,如果要获取第二个,把0改为1,依次类推 $currentSheet = $PHPExcel->getSheet(0); //获取总列数 $allColumn = $currentSheet->getHighestColumn(); //获取总行数 $allRow = $currentSheet->getHighestRow(); $excelData = array(); //循环获取表中的数据,$currentRow表示当前行,从哪行开始读取数据,索引值从0开始 for($currentRow = 2; $currentRow <= $allRow; $currentRow ++){ //从哪列开始,A表示第一列 for($currentColumn='B';$currentColumn<=$allColumn;$currentColumn++){ //数据坐标 $address=$currentColumn.$currentRow; //读取到的数据,保存到数组$arr中 $excelData[$currentRow][$currentColumn] = $currentSheet-> getCell($address)-> getValue(); } } return $excelData; }
导入操作:
public function test(){ $filePath = "./Uploads/201111.xls"; $data = $this->getdata($filePath); pd($data); // 得到数据 批量循环插入 $UserDB = M('user'); foreach($data as $k=>$v){ $data = array(); $data['name'] = $v['B']; $data['age'] = $v['C']; $data['city'] = $v['D']; // $UserDB->add($data); } }
需要导入的Excle.xls
上面 $data = $this->getdata($filePath); 获取的数据:
参考:导入操作
//导入Excel方法操作 public function importExp(){ header("Content-type: text/html;charset=utf-8");//设置页面内容是html编码格式是utf-8 $m=D("Webinfo");//连接数据表 $cell=array(); //导入Excel前要上传Excel文件到项目文件夹,如果成功进行,如果失败提示错误信息 //I('post.ExcelURL','','htmlspecialchars')为获取上传控件传来的文件名称 if(I('post.ExcelURL','','htmlspecialchars')!=""){ $uploads="Uploads"; $upload = new \Think\Upload();// 实例化上传类 $upload->maxSize = 5242880 ;// 设置附件上传大小 $upload->exts = array('xlsx','xls');// 设置附件上传类型 $upload->rootPath = './'.$uploads.'/'; // 设置附件上传根目录 $upload->subName = array('date','Ym'); // 上传单个文件 $info = $upload->uploadOne($_FILES['excel']); if(!$info) {// 上传错误提示错误信息 $this->error($upload->getError()); }else{ //上传Excel成功 $exts = $info['ext']; $file_name=$uploads.'/'.$info['savepath'].$info['savename']; $res=$this->getdata($file_name,$exts); //循环读取每行数据,进行写入数据库 foreach ( $res as $k => $v ) { if ($k != 0) { //获取数据库中的最大ID自增加1 $m->create(); $id=$m->max('ID'); if($id==0||$id==NULL||$id==""){ $id=1; } else { $id=$id+1; } //读取数据后赋给数组data $data['ID']=$id; $data ['Name'] = $v [B]; $data ['Site'] = $v [C]; $result = $m->add($data);//添加操作 } } if($result!=0){ $this->success('网站数据导入成功'); }else{ $this->error('网站数据导入失败'); } } } else { $this->error("请选择上传的文件"); } }