您的位置: 翼速应用 > 业内知识 > 数据库 > 正文

ThinkPhp5.1+PHPExcel制作实现数据导入

数据导入也是我们在日常开发中经常运用到的,在使用ThinkPhp5.1重数据导入,在很多地方都会有需要,如何使用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  软件网站下载即可


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


运行.jpg

输入:cd D:\phpstudy_pro\WWW\myapp.io,定位到项目所在目录


接下来就是安装PHPExcel插件,输入:composer require phpoffice/phpexcel,点击回车,即可开始安装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 后台处理

这里以上传一张会员信息表为例,包含的字段值有:姓名(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'=>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制作信息实现数据导入的所有流程,希望对大家有所帮助。

我来说两句

0 条评论

推荐阅读

  • 响应式布局CSS媒体查询设备像素比介绍

    构建响应式网站布局最常见的是流体网格,灵活调整大小的站点布局技术,确保用户在使用的幕上获得完整的体验。响应式设计如何展示富媒体图像,可以通过以下几种方法。

    admin
  • 提升网站的性能快速加载的实用技巧

    网站速度很重要,快速加载的网站会带来更好的用户体验、更高的转化率、更多的参与度,而且在搜索引擎排名中也扮演重要角色,做SEO,网站硬件是起跑线,如果输在了起跑线,又怎么跟同行竞争。有许多方法可提升网站的性能,有一些技巧可以避免踩坑。

    admin
  • 织梦CMS TAG页找不到标签和实现彩色标签解决方法

    织梦cms是我们常见的网站程序系统的一款,在TAG标签中常常遇到的问题也很多。当我们点击 tags.php 页的某个标签的时候,有时会提示:“系统无此标签,可 能已经移除!” 但是我们检查程序后台,以及前台显示页面。这个标签确实存在,如果解决这个问题那?

    admin
  • HTML关于fieldset标签主要的作用

    在前端开发html页面中常用的标签很多,今天为大家带来的是关于HTML中fieldset标签主要的作用说明,根据技术分析HTML

    admin

精选专题