tp5实现导入excel表到数据库

news2024/12/23 5:23:22

hello,大家好,好长时间没有更新文章了。最近一直在忙着做项目。所以断更了。
那么好,各位老铁是否想要实现导入导出的功能 请关注我,解密如何实现导入导出,
那么今天先来讲一下用thinkphp5.0 如何实现Excel表格导入数据到数据库
1.前提准备:
正常的流程是前端客户端上传excel文件到服务器上,然后通过代码解析解码然后存入到数据库里。
这里我们用到一个依赖叫phpExcle依赖。github下载地址:https://github.com/PHPOffice/PHPExcel
下载之后我们讲Classes目录解压出来放到我们tp5框架里面的vendor目录下,并改名为:PHPExcel
在这里插入图片描述
2.使用PHPExcel
在你使用的这个方法下或者是你可以封装一下,放到model里

/**
     * 获取excel文件后缀名
     */
    public function get_excel_name($filename){
        $arr = explode('.',$filename);
        return array_pop($arr);
    }

    /** excel导入数据*/
    public function import_excel_data(){
        vendor("PHPExcel.PHPExcel");
        $objPHPExcel =new \PHPExcel();
        $file = $this->request->file('file');
        $info = $file->validate(['ext' => 'xlsx,xls'])->move(ROOT_PATH . 'public/uploads/excel');  //上传验证后缀名,以及上传之后移动的地址
        if($info)
        {
            $exclePath = $info->getSaveName();  //获取文件名
            $file_name = ROOT_PATH . 'public/uploads/excel/' . DS . $exclePath;//上传文件的地址
            $name =  $this->get_excel_name($file_name);
            if($name ==='xlsx' ){
                $objReader =\PHPExcel_IOFactory::createReader('Excel2007');
            }else {
                $objReader =\PHPExcel_IOFactory::createReader('Excel5');
            }
            $obj_PHPExcel =$objReader->load($file_name, $encode = 'utf-8');  //加载文件内容,编码utf-8
            $excel_array=$obj_PHPExcel->getSheet(0)->toArray();   //转换为数组格式
            array_shift($excel_array);  //删除第一个数组(标题);
            $city = [];
            $i=0;
            foreach($excel_array as $k=>$v) {
                $city[$k]['keyword']   = isset($v[0])?$v[0]:"无";
                $i++;
            }
            $count=db('auto_keyword')->insertAll($city);
            $data = [
                'count'=>$count
            ];
            $this->success('ok',$data);
        }else
        {
            $this->error($file->getError());
        }
    }

在这里我们需要改几个文件:
PHPExcel/PHPExcel/Shared/String.php下面的“utf16_decode”方法,把{0}、{1}改成[0]、[1]
PHPExcel/PHPExcel/ReferenceHelper.php下面的“updateSingleCellReference”方法,把{0}、{1}改成[0]、[1]
PHPExcel/PHPExcel/Cell.php下面的“columnIndexFromString”方法,把{0}、{1}改成[0]、[1]
3.本地请求结果如下:
在这里插入图片描述4.数据库和excel文件数据对比一下
这两张表对比一下,然后再看上面的代码就更好操作了。这里的数据库的主键是自动递增的。其他的数据一一对应就OK了。
1>.这是excel表里的数据
在这里插入图片描述2>.这是数据库里的数据
在这里插入图片描述

好了。导入就讲到这里了。有用的小伙伴记得收藏关注我。这段代码亲测有效哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/418340.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何实现 Java SpringBoot 自动验证入参数据的有效性

Java SpringBoot 通过javax.validation.constraints下的注解,实现入参数据自动验证 如果碰到 NotEmpty 否则不生效,注意看下 RequestBody 前面是否加上了Valid Validation常用注解汇总 Constraint详细信息Null被注释的元素必须为 nullNotNull被注释的元…

CentOS7.6 磁盘挂载

CentOS7.6 磁盘挂载 目录CentOS7.6 磁盘挂载1.磁盘说明2.磁盘分区步骤1.磁盘说明 1、Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘 2、对于IDE硬盘,驱动器标识符为"hdx",""代表分区,前四个分区用数字…

selenium1—软件测试

文章目录1.什么是自动化测试2.如何实施自动化测试3.UI自动化测试的好处4.自动化框架5.为什么要选择selenium6.webdrive的原理7.selenium IDE1.什么是自动化测试 在预设的条件下(自动化脚本)运行系统,预设的条件包括正常的和异常的情况&#…

BGP反射器与联邦实验

基础配置 display ip interface brief Interface IP Address/Mask Physical Protocol GigabitEthernet0/0/0 12.0.0.2/24 up up GigabitEthernet0/0/1 172.16.1.1/29 up up GigabitEthernet0/0/2 172.16.1.9/29 up up LoopBack0 172.16.2.1/24 up up(s) NULL0 unassigned up u…

AI 工具 22个使用场景、500个通用提问技巧说明

✏️ 「提问技巧—重点摘要」 「写作」:AI写作提问技巧 「制作视频」:AI制作视频创意提问相关技巧 【制定商业策略】:AI为各行各业制定商业策略提问技巧 【写邮件】:AI写邮件提问技巧 【框架方法论写内容】:AI利用…

【云原生概念和技术】1.1 云原生的概述

如果想了解或者学习云原生的友友们,欢迎订阅哦~🤗,目前一周三更,努力码字中🧑‍💻…目前第一章是一些介绍和概念性的知识,可以先在脑海里有一个知识的轮廓,从第二章开始就…

Caffe

目录 1、简述 2、项目起源 3、架构设计 4、极智AI相关内容 1、简述 Caffe(全称Convolutional Architecture for Fast Feature Embedding)是一个兼具表达性、速度和思维模块化的深度学习框架,由伯克利人工智能研究小组和伯克…

小红书热词速看 | 古茗有何营销动作?

【导语】 据古茗官方数据,新系列推出当日即售空,单店最高出杯420杯,最快24小时内卖断货;上架3天,销量突破100万杯;10天,就售出了343万杯,其中2款牛油果奶昔用掉了40万斤牛油果&…

Hadoop完全分布式运行模式配置(开发重点)

目录 Hadoop是一个海量数据存储和计算的框架 Hadoop优点: 3.2 完全分布式运行模式(开发重点) 3.2.1 虚拟机准备 3.2.2 编写集群分发脚本xsync 3.2.3 SSH无密登录配置 3.2.4 集群配置 3.2.5 群起集群 3.2.6 配置历史服务器 3.2.7 配…

SpringBoot【运维实用篇】---- SpringBoot程序的打包与运行

SpringBoot【运维实用篇】---- SpringBoot程序的打包与运行程序打包程序运行SpringBoot程序打包失败处理命令行启动常见问题及解决方案刚开始做开发学习的小伙伴可能在有一个知识上面有错误的认知,我们天天写程序是在Idea下写的,运行也是在Idea下运行的。…

【从零开始学Skynet】基础篇(七):Mysql数据库常用API

在上一篇中我们完成了对Mysql数据库的准备工作之后,这一篇我们写一个程序测试一下。 1、Mysql API 在写程序之前,我们先学习一下Mysql数据库常用API的使用: API说明mysql.connet(args)连接数据库,参数args是一个Lua表&#xff0c…

责任链设计模式(Chain of Responsibility Pattern)[论点:概念、组成角色、图示、相关代码、框架中的运用、适用场景]

文章目录概念组成角色相关图示示例代码框架中的应用适用场景:概念 责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,其主要目的是将请求的发送者和接收者解耦。这种模式创建了一系列处理器对象,每个处…

Shell Script

目录Shell Script的概述Shell的主要版本Shell脚本的建立与执行Shell中的变量Shell中的特殊字符通配符双引号倒引号()顺序分隔符(;)管道符逻辑与(&&)和逻辑或(||)…

synchronized原理详解

众所周知,使用多线程可以极大地提升程序的性能,但如果多线程使用不合理,也会带来很多不可控的问题,例如线程安全问题。 什么是线程安全问题呢?如果多个线程同时访问某个方法时,这个方法无法得到我们预期的…

同步FIFO、异步FIFO详细介绍、verilog代码实现、FIFO最小深度计算、简答题

文章目录前言一、多bit数据流跨时钟域传输——FIFO1、FIFO分类2、常见参数3、与普通存储器的区别4、FIFO优缺点二、同步FIFO1、计数器法2、高位扩展法3、单端口和双端口RAM3.1 单端口RAM3.2 双端口RAM4、例化双端口RAM实现同步FIFO三、异步FIFO1、格雷码1.1 二进制和格雷码之间…

spring5(五):AOP操作

spring5(五):AOP操作前言一、代理模式1、场景模拟2、代理模式2.1 概念2.2 静态代理2.3 动态代理二、AOP概述1、什么是 AOP?2、相关术语3、作用三、AOP底层原理1、AOP 底层使用动态代理2、AOP(JDK 动态代理)2.1 编写 J…

VR全景展示,VR全景平台,助理全景展示新模式

引言: VR全景展示是一种新型的展示方式,它利用虚拟现实技术和全景拍摄技术,使参观者可以身临其境地进入虚拟展览空间。这种展示方式不仅能够提供更加沉浸式的参观体验,还可以解决传统展览所面临的时间和地域限制等问题。 VR全景展…

【Java实战篇】Day7.在线教育网课平台

文章目录一、需求:课程审核1、需求分析2、建表与数据模型3、接口定义4、Mapper层开发5、Service层开发6、完善controller层二、需求:课程发布1、需求分析2、建表与数据模型3、技术方案4、接口定义5、消息处理SDK6、Mapper层开发7、Service层开发8、页面静…

unity,射手游戏

文章目录介绍一,制作玩家具体函数脚本PlayerCharacter三、 制作玩家控制脚本 PlayerController,调用上面的函数方法四、 制作子弹脚本 shell五、 给玩家挂载脚本六、 制作坦克脚本七、 给坦克添加组件八、 开始游戏,播放动画九、 下载介绍 3…

seata学习笔记

Seata 官网: https://seata.io/zh-cn/index.html 是什么? Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式…