Der Datenimport ist an vielen Stellen erforderlich. Wie führt man den Datenimport mit ThinkPhp5.1 durch?
1 Vorbereitung
Der Editor implementiert den Datenimport über PHPExcel, daher müssen Sie vor der Produktion zunächst PHPExcel-bezogene Komponenten herunterladen. Derzeit unterstützt tp5.1 die Composer-Installation und der Editor hat die PHPExcel-Komponente über Composer installiert. [Empfohlen: thinkphp-Video-Tutorial]
Vor der Installation müssen Sie zunächst sicherstellen, dass Sie die Composer-Komponente auf Ihrem Computer haben. Wenn Composer noch nicht installiert ist, können Sie den folgenden Befehl unter Linux und Mac OS X ausführen:
curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer
Unter Windows müssen Sie Composer-Setup.exe herunterladen und ausführen, Download-Adresse:
https://www.kancloud.cn/manual/thinkphp5_1/353948
Nach der Installation von Composer müssen Sie PHPExcel installieren , win+R, öffnen Führen Sie die Schnittstelle aus, geben Sie cmd ein, rufen Sie die Verwaltungsschnittstelle auf, geben Sie den Laufwerksbuchstaben ein, in dem sich Ihr Projekt befindet (hier nehmen Sie das Laufwerk D als Beispiel, das Projekt befindet sich in D:phpstudy_proWWWmyapp.io) und Klicken Sie dann auf Eingabe:
Eingabe: cd D: phpstudy_proWWWmyapp.io, suchen Sie das Verzeichnis, in dem sich das Projekt befindet
Der nächste Schritt besteht darin, das PHPExcel-Plug-in zu installieren, geben Sie ein: Composer erfordert phpoffice/phpexcel , klicken Sie auf die Eingabetaste, um mit der Installation von PHPExcel zu beginnen.
2 Front-End-Einreichungsseite
html
<form class="layui-form" enctype="multipart/form-data"> <input type="hidden" name="type_id" value="{$type_id}"> <div class="layui-form-item" style="margin-left: 42px;"> <div class="layui-input-inline" style="width: 122px;"> <button type="button" class="layui-btn" name="file" lay-verify="file" id="test3"><i class="layui-icon"></i>上传文件</button> </div> </div> <div class="layui-form-item" style="margin-left: 42px;"> <div class="layui-input-inline"> <button class="layui-btn" lay-filter="add" lay-submit="add"> 导入 </button> </div> </div> <div class="layui-form-item"> <div class="layui-input-block"> <div style="line-height: 35px;"> 注: <p>1.文件大小:请上传小于10M的文件</p> <p>2.文件类型:上传时首先 <span class="common-a"> <a href="/import/member.xlsx">下载导入模板</a> </span>,填好信息后上传</p> </div> </div> </div> </form>
js
<script> layui.use(['form', 'layer','upload'], function () { $ = layui.jquery; var form = layui.form , layer = layui.layer; var $ = layui.jquery, upload = layui.upload; upload.render({ elem: '#test3' ,url: '你的上传路径' ,accept: 'file' //普通文件 ,exts: 'xls|xlsx' ,size:'10240' ,done: function(res){ $('#test3').append('<input type="text" name="file" id="file" lay-verify="file" value="'+res.data +'" />') } }); //监听提交 form.on('submit(add)', function(data){ console.log(data); //发异步,把数据提交给php $.post('{:url(\'saveImportMember\')}',$('form').serialize(),function(data){ if(data.res == 1){ layer.msg(data.msg); setTimeout(function(){parent.window.location.reload();},1000); }else if(data.res == 0){ layer.alert(data.msg,{icon: 2}); }else{ layer.alert('操作失败',{icon: 2}); } }) return false; }); }); </script>
3 Hintergrundverarbeitung
Hier ist ein Beispiel für das Hochladen einer Mitgliederinformationstabelle. Die Feldwerte umfassen Hrsg sind: Name (Name), Geschlecht (Sex), Mitgliedschaftstyp (Type_ID), ID-Nummer (Identität), Mitgliedsnummer (Nummer), Kontaktnummer (Telefon), Sortierung (Sortierung), Mitgliedsstatus (Status).
//上传excel文件 $file = Request::param('file'); //获取文件路径 $filePath = Env::get('root_path').'public'.DIRECTORY_SEPARATOR.$file; if($filePath == ''){ return ['res'=>0,'msg'=>'你上传的文件为空']; } $suffix = $this->DbSy->GetFileExt($file); //判断哪种类型 if($suffix=="xlsx"){ $reader = \PHPExcel_IOFactory::createReader('Excel2007'); }else{ $reader = \PHPExcel_IOFactory::createReader('Excel5'); } //载入excel文件 $excel = $reader->load("$filePath",$encode = 'utf-8'); //读取第一张表 $sheet = $excel->getSheet(0); //获取总行数 $row_num = $sheet->getHighestRow(); //获取总列数 $col_num = $sheet->getHighestColumn(); $time = time(); $data = []; //数组形式获取表格数据 $count = 0; $total = 0; $error_count = 0; for ($i = 2; $i <= $row_num; $i ++) { $type_id = Request::param('type_id'); $data['type_id'] = $type_id; $name = $sheet->getCell("A".$i)->getValue(); $sex = $sheet->getCell("B".$i)->getValue(); $identity = $sheet->getCell("C".$i)->getValue(); $telephone = $sheet->getCell("F".$i)->getValue(); $data['sort'] = $this->DbSy->getSort(5,'sort desc',array('type_id'=>$type_id)); if(!$identity){ return ['res'=>0,'msg'=>'身份证号不能为空']; } $data['identity'] = $identity; if(!$name){ return ['res'=>0,'msg'=>'姓名不能为空']; } $data['name'] = $name; if($sex=='男'){ $data['sex'] = 1; }elseif ($sex=='女'){ $data['sex'] = 2; }else{ $data['sex'] = 3; } $data['identity'] = $identity; $data['number'] = $this->DbSy->getNumber(5,'sort desc',array('type_id'=>$type_id)); if($telephone){ $data['telephone'] = $telephone; }else{ $data['telephone'] = ''; } $data['status'] = 5; $member = $this->DbSy->FindWhere(5,array('name'=>$name,'identity'=>$identity,'type_id'=>$type_id)); if($member){ /*$data['updatetime'] = time();*/ $info = $this->DbSy->editContent(5,$data,array('id'=>$member['id'])); if($info){ $total++; } }else{ // 读取单元格 $data['addtime'] = time(); $data['updatetime'] = time(); $info = $this->DbSy->insertGetId(5,$data); if($info){ $count++; }else{ $error_count++; } } } $msg = "成功导入".$count."条数据,重复".$total."条数据,导入失败".$error_count."条数据"; if($count > 0){ return ['res'=>1,'msg'=>$msg]; }else{ return ['res'=>0,'msg'=>$msg]; }
Das Obige ist die Zusammenfassung aller Prozesse zum Importieren von Informationen mit TP5.1+PHPExcel. Ich hoffe, dass es für alle hilfreich ist.
Das obige ist der detaillierte Inhalt vonThinkPhp5.1 + PHPExcel-Produktionsdatenimport. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!