当前位置: 首页 > news >正文

tp5实现导入excel表到数据库

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.lryc.cn/news/60212.html

相关文章:

  • Python基础-04 字符串
  • VVC之编码结构
  • FPGA基于SFP光口实现10G万兆网UDP通信 10G Ethernet Subsystem替代网络PHY芯片 提供工程源码和技术支持
  • Linux Redis主从复制 | 哨兵监控模式 | 集群搭建 | 超详细
  • 整柜海运到美国的规格和收费标准是什么
  • Session和Cookie区别介绍+面试题
  • easyx
  • 记一次科学
  • 亚马逊被人差评了怎么办?
  • 【目标检测】YOLOv5:修改自己的网络结构
  • spring boot 工程整合mongodb,遇到的坑
  • 防抖函数(最全 最干净 最好理解)
  • 王小川,才是深「爱」李彦宏的那个人?
  • 南京邮电大学通达学院2023《电子装配实习》报告
  • Linux--tty
  • 一位女程序员的自述:我是如何成为前端工程师的
  • C++命名空间详解
  • HDMI EDID概念梳理
  • Android端推送消息之极光推送
  • 2023测试工程师全新技术栈,吃透这些,起薪就15k
  • 十、CNN卷积神经网络实战
  • App 自动化测试
  • 考研英语知识点
  • IPSEC实验(IPSECVPN点到点,DSVPN,IPSECVPN旁挂)
  • 从4k到42k,软件测试工程师的涨薪史,给我看哭了
  • tomcat作业
  • 除了Java,还可以培训学习哪些IT技术?
  • Mysql优化(一)-- sql语句优化概述及数据库优化
  • 深度学习快速参考:1~5
  • 软件设计师笔记-----程序设计语言与语言处理程序基础