搜索
首页php框架ThinkPHPThinkPhp5.1 + PHPExcel制作数据导入

ThinkPhp5.1 + PHPExcel制作数据导入

Feb 16, 2022 pm 05:29 PM
phpexcelthinkphp5.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,下载地址:

https://www.kancloud.cn/manual/thinkphp5_1/353948

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

1.png

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

2.png

接下来就是安装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([&#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(&#39;file&#39;);
//获取文件路径
$filePath = Env::get(&#39;root_path&#39;).&#39;public&#39;.DIRECTORY_SEPARATOR.$file;
if($filePath == &#39;&#39;){
    return [&#39;res&#39;=>0,&#39;msg&#39;=>&#39;你上传的文件为空&#39;];
}
$suffix = $this->DbSy->GetFileExt($file);
//判断哪种类型
if($suffix=="xlsx"){
    $reader = \PHPExcel_IOFactory::createReader(&#39;Excel2007&#39;);
}else{
    $reader = \PHPExcel_IOFactory::createReader(&#39;Excel5&#39;);
}
//载入excel文件
$excel = $reader->load("$filePath",$encode = &#39;utf-8&#39;);
//读取第一张表
$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(&#39;type_id&#39;);
    $data[&#39;type_id&#39;] = $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[&#39;sort&#39;] = $this->DbSy->getSort(5,&#39;sort desc&#39;,array(&#39;type_id&#39;=>$type_id));
    if(!$identity){
        return [&#39;res&#39;=>0,&#39;msg&#39;=>&#39;身份证号不能为空&#39;];
    }
    $data[&#39;identity&#39;] = $identity;
    if(!$name){
        return [&#39;res&#39;=>0,&#39;msg&#39;=>&#39;姓名不能为空&#39;];
    }
    $data[&#39;name&#39;] = $name;
    if($sex==&#39;男&#39;){
        $data[&#39;sex&#39;] = 1;
    }elseif ($sex==&#39;女&#39;){
        $data[&#39;sex&#39;] = 2;
    }else{
        $data[&#39;sex&#39;] = 3;
    }
    $data[&#39;identity&#39;] = $identity;
    $data[&#39;number&#39;] = $this->DbSy->getNumber(5,&#39;sort desc&#39;,array(&#39;type_id&#39;=>$type_id));
   
    if($telephone){
        $data[&#39;telephone&#39;] = $telephone;
    }else{
        $data[&#39;telephone&#39;] = &#39;&#39;;
    }
    $data[&#39;status&#39;] = 5;
    $member = $this->DbSy->FindWhere(5,array(&#39;name&#39;=>$name,&#39;identity&#39;=>$identity,&#39;type_id&#39;=>$type_id));
    if($member){
        /*$data[&#39;updatetime&#39;] = time();*/
        $info = $this->DbSy->editContent(5,$data,array(&#39;id&#39;=>$member[&#39;id&#39;]));
        if($info){
            $total++;
        }
    }else{
        // 读取单元格
        $data[&#39;addtime&#39;] = time();
        $data[&#39;updatetime&#39;] = time();
        $info = $this->DbSy->insertGetId(5,$data);
        if($info){
            $count++;
        }else{
            $error_count++;
        }
    }
}
$msg =  "成功导入".$count."条数据,重复".$total."条数据,导入失败".$error_count."条数据";
if($count > 0){
    return [&#39;res&#39;=>1,&#39;msg&#39;=>$msg];
}else{
    return [&#39;res&#39;=>0,&#39;msg&#39;=>$msg];
}

以上就是小编总结的利用TP5.1+PHPExcel制作信息导入的所有流程,希望对大家有所帮助。

以上是ThinkPhp5.1 + PHPExcel制作数据导入的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。