ThinkPhp5.1 + PHPExcel制作数据导入

数据导入,在很多地方都会有需要,如何使用thinkphp5.1制作数据导入,接下来小编带大家去了解整个过程。

1 准备工作

小编是通过PHPExcel实现数据导入的,所以在制作之前首先需要下载PHPExcel相关组件,目前tp5.1支持composer安装,小编就是通过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,下载地址:

立即学习PHP免费学习笔记(深入)”;

thinkphp视频教程

安装好composer之后,就是安装PHPExcel了,win+R,打开运行界面,输入cmd,进入管理界面,输入你的项目所在的盘符(此处以D盘为例,项目在D:phpstudy_proWWWmyapp.io),然后点击回车:

ThinkPhp5.1 + PHPExcel制作数据导入

输入:cd D:phpstudy_proWWWmyapp.io,定位到项目所在目录

ThinkPhp5.1 + PHPExcel制作数据导入

接下来就是安装PHPExcel插件,输入:composer require phpoffice/phpexcel,点击回车,即可开始安装PHPExcel。

2 前端提交页面

html


         

        

                     

    

    

        

                     

    

    

        

            

                注:                 

1.文件大小:请上传小于10M的文件

                

2.文件类型:上传时首先                                      下载导入模板             ,填好信息后上传

            

        

    

js

<script>     layui.use([&#39;form&#39;, &#39;layer&#39;,&#39;upload&#39;], function () {         $ = layui.jquery;         var form = layui.form             , layer = layui.layer;          var $ = layui.jquery,             upload = layui.upload;          upload.render({             elem: &#39;#test3&#39;             ,url: &#39;你的上传路径&#39;             ,accept: &#39;file&#39; //普通文件             ,exts: &#39;xls|xlsx&#39;             ,size:&#39;10240&#39;             ,done: function(res){                 $(&#39;#test3&#39;).append(&#39;<input type="text" name="file" id="file" lay-verify="file" value="&#39;+res.data +&#39;" />&#39;)             }         });         //监听提交         form.on(&#39;submit(add)&#39;, function(data){             console.log(data);             //发异步,把数据提交给php             $.post(&#39;{:url(&#39;saveImportMember&#39;)}&#39;,$(&#39;form&#39;).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(&#39;操作失败&#39;,{icon: 2});                 }             })             return false;         });     }); </script>

3 后台处理

这里以上传一张会员信息表为例,包含的字段值有:姓名(name)、性别(sex)、会员类型(type_id)、身份证号(identity)、会员编号(number)、联系电话(telephone)、排序(sort)、会员状态(status)。

//上传excel文件 $file = Request::param('file'); //获取文件路径 $filePath = Env::get('root_path').'public'.DIRECTORY_SEPARATOR.$file; if($filePath == ''){     return ['res'=&gt;0,'msg'=&gt;'你上传的文件为空']; } $suffix = $this-&gt;DbSy-&gt;GetFileExt($file); //判断哪种类型 if($suffix=="xlsx"){     $reader = PHPExcel_IOFactory::createReader('Excel2007'); }else{     $reader = PHPExcel_IOFactory::createReader('Excel5'); } //载入excel文件 $excel = $reader-&gt;load("$filePath",$encode = 'utf-8'); //读取第一张表 $sheet = $excel-&gt;getSheet(0); //获取总行数 $row_num = $sheet-&gt;getHighestRow(); //获取总列数 $col_num = $sheet-&gt;getHighestColumn(); $time = time(); $data = []; //数组形式获取表格数据 $count = 0; $total = 0; $error_count = 0; for ($i = 2; $i getCell("A".$i)-&gt;getValue();     $sex = $sheet-&gt;getCell("B".$i)-&gt;getValue();     $identity = $sheet-&gt;getCell("C".$i)-&gt;getValue();     $telephone = $sheet-&gt;getCell("F".$i)-&gt;getValue();     $data['sort'] = $this-&gt;DbSy-&gt;getSort(5,'sort desc',array('type_id'=&gt;$type_id));     if(!$identity){         return ['res'=&gt;0,'msg'=&gt;'身份证号不能为空'];     }     $data['identity'] = $identity;     if(!$name){         return ['res'=&gt;0,'msg'=&gt;'姓名不能为空'];     }     $data['name'] = $name;     if($sex=='男'){         $data['sex'] = 1;     }elseif ($sex=='女'){         $data['sex'] = 2;     }else{         $data['sex'] = 3;     }     $data['identity'] = $identity;     $data['number'] = $this-&gt;DbSy-&gt;getNumber(5,'sort desc',array('type_id'=&gt;$type_id));         if($telephone){         $data['telephone'] = $telephone;     }else{         $data['telephone'] = '';     }     $data['status'] = 5;     $member = $this-&gt;DbSy-&gt;FindWhere(5,array('name'=&gt;$name,'identity'=&gt;$identity,'type_id'=&gt;$type_id));     if($member){         /*$data['updatetime'] = time();*/         $info = $this-&gt;DbSy-&gt;editContent(5,$data,array('id'=&gt;$member['id']));         if($info){             $total++;         }     }else{         // 读取单元格         $data['addtime'] = time();         $data['updatetime'] = time();         $info = $this-&gt;DbSy-&gt;insertGetId(5,$data);         if($info){             $count++;         }else{             $error_count++;         }     } } $msg =  "成功导入".$count."条数据,重复".$total."条数据,导入失败".$error_count."条数据"; if($count &gt; 0){     return ['res'=&gt;1,'msg'=&gt;$msg]; }else{     return ['res'=&gt;0,'msg'=&gt;$msg]; }

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享