这是我写的学习EasyAdmin的第四章,这一章我给大家分享下Excel表单导入数据库的全流程需要怎么处理并提供案例

首先给大家看下这个功能的原理,下面是PHP连接打印机的代码

    public function uplExcel(Request $request){if (!empty($_FILES['excel']['name'])) {$fileName = $_FILES['excel']['name'];    //得到文件全名$dotArray = explode('.', $fileName);    //把文件名安.区分,拆分成数组$type = end($dotArray);if ($type != "xls" && $type != "xlsx") {$ret['res'] = "0";$ret['msg'] = "不是Excel文件,请重新上传!";return json_encode($ret);}//取数组最后一个元素,得到文件类型$uploaddir = "../uploads2/" . date("Y-m-d") . '/';//设置文件保存目录 注意包含if (!file_exists($uploaddir)) {mkdir($uploaddir, 0777, true);}$path = $uploaddir . md5(uniqid(rand())) . '.' . $type; //产生随机文件名//$path = "images/".$fileName; //客户端上传的文件名;//下面必须是tmp_name 因为是从临时文件夹中移动move_uploaded_file($_FILES['excel']['tmp_name'], $path); //从服务器临时文件拷贝到相应的文件夹下$file_path = $path;if (!file_exists($path)) {$ret['res'] = "0";$ret['msg'] = "上传文件丢失!" . $_FILES['excel']['error'];return json_encode($ret);}//文件的扩展名$ext = strtolower(pathinfo($path, PATHINFO_EXTENSION));if ($ext == 'xlsx') {$objReader = \PHPExcel_IOFactory::createReader('Excel2007');$objPHPExcel = $objReader->load($file_path, 'utf-8');} elseif ($ext == 'xls') {$objReader = \PHPExcel_IOFactory::createReader('Excel5');$objPHPExcel = $objReader->load($file_path, 'utf-8');}$sheet = $objPHPExcel->getSheet(0);$highestRow = $sheet->getHighestRow(); // 取得总行数$highestColumn = $sheet->getHighestColumn(); // 取得总列数$ar = array();$i = 0;$importRows = 0;for ($j = 2; $j <= $highestRow; $j++) {$importRows++;$realName = (string)$objPHPExcel->getActiveSheet()->getCell("A$j")->getValue();//需要导入的realName$phone = (string)$objPHPExcel->getActiveSheet()->getCell("B$j")->getValue();   //需要导入的phone$company = (string)$objPHPExcel->getActiveSheet()->getCell("C$j")->getValue(); //需要导入的company$job = (string)$objPHPExcel->getActiveSheet()->getCell("D$j")->getValue();     //需要导入的job$email = (string)$objPHPExcel->getActiveSheet()->getCell("E$j")->getValue();   //需要导入的email$ret['mdata'] = $this->addMemb($phone, $realName, $company, $job, $email);//这里就是我的数据库添加操作定义的一个方法啦,对应替换为自己的if ($ret['mdata'] && !is_Bool($ret['mdata'])) {$ar[$i] = $ret['mdata'];$i++;}}if ($i > 0) {$ret['res'] = "0";$ret['errNum'] = $i;$ret['allNum'] = $importRows;$ret['sucNum'] = $importRows - $i;$ret['mdata'] = $ar;$ret['msg'] = "导入完毕!";return json_encode($ret);}$ret['res'] = "1";$ret['allNum'] = $importRows;$ret['errNum'] = 0;$ret['sucNum'] = $importRows;$ret['mdata'] = "导入成功!";return json_encode($ret);} else {$ret['res'] = "0";$ret['msg'] = "上传文件失败!";return json_encode($ret);}}  

大家可以看到,正常的Excel导入流程分为上传+解析+数据处理+录入四部,整体的流程是调用对应的接口和插件,而使用TP框架,会直接帮我们绕过上传流程,我们使用PHPEXCEL插件直接到解析,具体代码如下:

下载PHPExcel放到vendor下,并在后台接口中导入

public function save(){if(request() -> isPost()){vendor("PHPExcel.PHPExcel"); $objPHPExcel =new \PHPExcel();//var_dump($objPHPExcel);die;//获取表单上传文件$file = request()->file('excel');//print_r($file);die;$info = $file->validate(['ext' => 'xlsx'])->move(ROOT_PATH . 'public/file');  //上传验证后缀名,以及上传之后移动的地址  if($info){$exclePath = $info->getSaveName();  //获取文件名$file_name = ROOT_PATH . 'public/file/' . DS . $exclePath;//上传文件的地址$objReader =\PHPExcel_IOFactory::createReader("Excel2007");$obj_PHPExcel =$objReader->load($file_name, $encode = 'utf-8');  //加载文件内容,编码utf-8$excel_array=$obj_PHPExcel->getSheet(0)->toArray();   //转换为数组格式//print_r($excel_array);die;array_shift($excel_array);  //删除第一个数组(标题);$city = [];$i=0;foreach($excel_array as $k=>$v) {$click_time  = strtotime($v[2]);//点击时间转为时间戳$active_time = strtotime($v[2]);//激活时间转为时间戳$city[$k]['adid']      = $v[0];$city[$k]['idfa']      = $v[1];$city[$k]['udid']      = $v[4];$city[$k]['model']     = $v[5];$city[$k]['os']        = $v[6];$city[$k]['ip']        = $v[7];$city[$k]['add_time']  = $click_time;$city[$k]['act_time']  = $active_time;$i++;}// print_r($city);die;Db::name("check_udid")->insertAll($city);}else{echo $file->getError();}}} 

EasyAdmin虽然基于TP6,在使用的过程中我发现,它不需要自己写以上方法,框架自带一些写好的上传方法,直接使用即可,具体方法如下:

在使用的php中导入:

use jianyan\excel\Excel;

调用即可:

            $file = request()->file('file');ini_set('memory_limit','1024M');$data =  Excel::import($file);        

如果本文对你有所帮助,麻烦你点个赞,下一章讲下如何自制搜索框并进行各种参数调整。

TP6框架--EasyAdmin学习笔记:Excel表单导入数据库相关推荐

  1. TP框架增删改查需要掉ajax么6,TP6框架--EasyAdmin学习笔记:实现数据库增删查改

    这是我写的学习EasyAdmin的第三章,这一章我给大家分享下如何进行数据库的增删查改 上一章链接:点击这里前往 上一章我们说到,我仿照官方案例,定义了一条路由goodsone和创建了对应数据库,我们 ...

  2. 用java将excel表单导入数据库表单----新手入门

    构建项目思路 1.利用Excel第三方工具,将Excel文件读取到内存中.使用最简单,方便的工具是apache的poi工具包,自己网上下载 http://poi.apache.org/ ,使用方法网上 ...

  3. python表单提交的两种方式_Flask框架学习笔记之表单基础介绍与表单提交方式

    本文实例讲述了Flask框架学习笔记之表单基础介绍与表单提交方式.分享给大家供大家参考,具体如下: 表单介绍 表单是HTML页面中负责数据采集功能的部件.由表单标签,表单域和表单按钮组成.通过表单,将 ...

  4. ASP.NET MVC 2 学习笔记二: 表单的灵活提交

    ASP.NET MVC 2 学习笔记二:  表单的灵活提交 前面说到有做到公司内部的一个请假系统,用的是ASP.NET MVC 2+Entity Framework.虽然EF(Entity Frame ...

  5. oracle数据库开多线程,学习笔记:Oracle表数据导入 DBA常用单线程插入 多线程插入 sql loader三种表数据导入案例...

    天萃荷净 oracle之数据导入,汇总开发DBA在向表中导入大量数据的案例,如:单线程向数据库中插入数据,多线程向数据表中插入数据,使用sql loader数据表中导入数据案例 1.Oracle数据库 ...

  6. H5学习笔记(表单、框架)

    表单标签 表单用于收集不同类型的用户输入数据 form常用属性 form标签定义表单 属性名 代码 描述 action <form action ="服务器地址">&l ...

  7. 前后端分离学习笔记(5) ---[表单的增删改操作;以及为管理员上传头像]

    上一篇案例中也是查询到了表单的内容–>前后端分离学习笔记(4) -[路由嵌套, 查询表单显示] 文章目录 1.前端组件页面 添加管理员操作 修改管理员信息 删除管理员 为管理员上传头像 修改密码 ...

  8. Vue学习笔记(六) 表单输入绑定

    v-model 指令在表单元素上创建双向数据绑定,它负责用于监听用户输入事件以更新数据 注意,v-model 会忽略所有表单元素特性的初始值,而总是将 Vue 实例的数据作为数据来源 1.输入框 &l ...

  9. 12.6学习笔记 HTML5表单元素/嵌入图片/视频(未完)

    12.6学习笔记 一. HTML 表单元素(下) 二. HTML5嵌入图片与创建分区响应图 三. HTML5嵌入视频 一. HTML 表单元素(下) 主要内容: 用input元素获取有规定格式的字符串 ...

最新文章

  1. 参加浙江中医药大学第十二届程序设计竞赛(ACM赛制)的小记
  2. win7安装git客户端和简单配置
  3. 【图像超分辨率】Multi-scale Residual Network for Image Super-Resolution
  4. [华清远见]FPGA公益培训
  5. 跨平台(windows+linux)的线程辅助程序,跨平台(Windows+Linux)的Socket通讯程序(二)—结构...
  6. Assembly is incorrectly specified as a file
  7. 两道关于回溯法,分支限界法的算法题
  8. 字母大小写全排列C语言,14种模式解决面试算法编程题(PART II)
  9. 个人信息保护与大数据应用如何共存
  10. 一本程序员职场的百科全书
  11. paip.navicat form mysql导入文本文件时CPU占用100%的解决
  12. 毕设题目:Matlab通信
  13. AD7124采集工作流程
  14. MYSQL数据库同步工具
  15. Windows系统重装教程完整版(系统备份、系统还原与重装)
  16. C# 利用iTextSharp画PDF
  17. MySQL的多表操作
  18. python打开txt文件以gbk,python中txt文件的编码转换问题utf-8转gbk
  19. Python爬虫 刷博客访问量
  20. Tracup|拒绝低效办公,8个Tips让你芜湖起飞,工作效率MAX

热门文章

  1. I - Keylogger Gym - 101078I——模拟队列+栈
  2. T568A标准和T568B标准
  3. java如何忽略过程值_Java中容易被你忽略的细节(四)
  4. vc调试多线程程序的方法
  5. 华为云存储空间图库占比太大_用户数据安全存储 华为云空间这些功能大显身手...
  6. useSSL=true和false区别:
  7. 【实战】RockMongo和RoboMongo初体验
  8. 【Rust日报】2022-12-11 EDMA:用 Rust 编写的嵌入式数据库管理终端应用程序
  9. matlab:使用龙格库塔法求解微分方程组
  10. Java汽车租赁管理系统