データのインポートは多くの場所で必要です。ThinkPhp5.1 を使用してデータのインポートを行うにはどうすればよいですか? 次に、エディターがプロセス全体を理解するように導きます。
1 準備
エディターは PHPExcel を介してデータ インポートを実装しているため、運用前に、まず PHPExcel 関連コンポーネントをダウンロードする必要があります。現在、tp5.1 は Composer のインストールをサポートしています。エディターはコンポーザーを通じて PHPExcel コンポーネントをインストールしました。 [推奨: thinkphp ビデオ チュートリアル ]
インストールする前に、まずコンピュータに Composer コンポーネントがあることを確認する必要があります。Composer がインストールされていない場合は、次のコマンドを実行できます。 Linux および Mac OS X :
curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer
Windows では、Composer-Setup.exe をダウンロードして実行する必要があります。ダウンロード アドレス:
https://www.kancloud.cn/ Manual/thinkphp5_1/353948
composer をインストールした後、PHPExcel をインストールする必要があります。R を起動し、実行インターフェイスを開き、cmd と入力し、管理インターフェイスに入り、プロジェクトが配置されているドライブ文字を入力します (ここでは、D ドライブを例として、プロジェクト D:\phpstudy_pro\WWW\myapp.io) をクリックし、Enter:
Enter: cd D:\ をクリックします。 phpstudy_pro\WWW\myapp.io で、プロジェクト ディレクトリを見つけます
次のステップは、PHPExcel プラグインをインストールすることです。「composer require phpoffice/phpexcel」と入力し、Enter をクリックします。 PHPExcel のインストールを開始します。
2 フロントエンド送信ページ
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 バックグラウンド処理
会員情報テーブルをアップロードする例です。含まれるフィールド値は、名前、性別、会員タイプです。 (type_id)、ID番号(identity)、会員番号(number)、連絡先番号(telephone)、ソート(sort)、会員ステータス(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]; }
上記は、TP5.1 PHPExcel を使用して情報をインポートするすべてのプロセスを編集者が要約したものです。
以上がThinkPhp5.1 + PHPExcel 本番データのインポートの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。