专栏首页北溟有鱼QAQTP5.1中导入Excel表到数据库

TP5.1中导入Excel表到数据库

TP5.1中利用Excel库导入数据到mysql

  1. 利用composer下载类库 composer require phpoffice/phpspreadsheet
  2. 找到源码在vender下面有个最新下载的phpoffice类库,找到samples下面的Basic,查看里面的自带demo
  1. 自己新建一个xls文档,用来做测试使用,如果所示
  1. 编写上传程序,此处前端省略(直接看代码里面的注释)
public function upload(Request $request)
    {
        //通过注入的request对象获取上传的文件
        $file  = $request->file('excel');
		//对文件大小和格式进行验证
        $info = $file->validate(['size'=>5*1024*1024,'ext'=>'xls'])->move( 'uploads/excel');
        if(!$info){
           $this->error($file->getError());
        }
        //声明读取的文件格式
        $objReader = IOFactory::createReader('Xls');

        //加载excel文件
        $objPHPExcel = $objReader->load(Env::get('root_path').'public\uploads\excel\\'.$info->getSaveName());
        //读取默认工作表
        $worksheet = $objPHPExcel->getSheet(0);
        //取得一共有多少行
        $allRow = $worksheet->getHighestRow();
        $data = [];
        for ($i = 3; $i <= $allRow; $i++)
        {
            $data['car_num'] = $objPHPExcel->getActiveSheet()->getCell('A'.$i)->getValue();
            $data['car_name'] = $objPHPExcel->getActiveSheet()->getCell('B'.$i)->getValue();
			//防止出现空白Excel导致mysql报错,对数据做下判断
            if(empty($data['car_num']) && empty($data['car_name'])){
				//跳出循环
                break;
            }
            $data['add_time'] = time();
			//插入数据库
            $suc = \app\admin\model\Car::create($data);
        }
        if($suc){
            echo "<script>alert('导入成功');window.location.href='/admin/car/index';</script>";
        }else{
            echo "<script>alert('导入失败');window.history.go(-1);</script>";
        }
    }

本文为北溟有鱼QAQ原创文章,转载无需和我联系,但请注明来自北溟有鱼QAQ https://www.umdzz.cn

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • EasySwoole之定时任务面板

    2、首先任务有间隔执行(秒级)和 定时执行(分级),所以就考虑到每种类型的任务开两个进程来执行(也就是正哥所说的管理进程和执行进程),最终间隔执行是开启自定义进...

    北溟有鱼QAQ
  • EasySwoole中连接池为空的原因

    在easyswoole的群里,每天都需要回答各种各样的问题,其中不乏一些问题反复被小白们问起,比如今天的这个主题:连接池取出empty 为null导致的问题

    北溟有鱼QAQ
  • 原生workman实现消息推送

    共享单车关闭后,会通过设置的url,进行回调,发送数据。那么相对于共享单车关锁来说,回调给url的数据,对于客户端来说是异步操作,那么如何使回调变成同步操作,客...

    北溟有鱼QAQ
  • rbd的image对象数与能写入文件数的关系

    对于这个问题,我原来的理解也是:对象默认设置的大小是4M一个,存储下去的数据,如果小于4M,就会占用一个小于4M的对象,如果超过4M,那么存储的数据就会进行拆分...

    用户2772802
  • ctfshow-萌新赛

    那么这个sudoku.png就可能是伪加密,通过修改二进制解压出sudoku.png

  • [Linux]正则表达式和grep使用

    可以看以前的博客[Regex]Get正则表达式:https://blog.csdn.net/humanking7/article/details/5117593...

    祥知道
  • 速读原著-TCP/IP(TCP的交互数据流)

    前一章我们介绍了 T C P连接的建立与释放,现在来介绍使用 T C P进行数据传输的有关问题。

    cwl_java
  • Python爬虫第二天

            有时候访问网页时长时间未响应,系统就会判断网页超时,无法打开网页。如果需要自己设置超时时间则:

    py3study
  • 7 Papers | 腾讯王者荣耀绝悟AI;ICLR高分论文Reformer

    论文 1:Mastering Complex Control in MOBA Games with Deep Reinforcement Learning

    机器之心
  • Linux系统实战——批量无人值守安装操作系统

    实际生产环境中肯定会有一次性安装多台服务器操作系统的工作,因此,光靠传统的一台台安装,很费时费力,数量不多的情况,还是比较好应付,如果一次是几十...

    民工哥

扫码关注云+社区

领取腾讯云代金券