Thinkphp5+PHPExcel实现批量上传表格数据功能

http://www.jb51.net/article/129262.htm

1.首先要下载PHPExcel放到vendor文件夹下,我的路径是:项目/vendor/PHPExcel/,把下载的PHPExcel文件放在这里

2.前端代码

<!DOCTYPE html>
<html>
<head>
  <title>批量导入数据</title>
</head>
<body>
<form action="{:url(‘/index/index/importExcel‘)}" method="post" enctype="multipart/form-data">
  <input type="file" name="myfile"><br/>
  <input type="submit" value="批量的导入">
</form>
</body>
</html>
   

3.后台代码

/**
  * 导入表格数据
  * 先把文件上传到服务器,然后再读取数据存到数据库
  */
  public function importExcel(){
    header("content-type:text/html;charset=utf-8");
    //上传excel文件
    $file = request()->file(‘myfile‘);
    //移到/public/uploads/excel/下
    $info = $file->move(ROOT_PATH.‘public‘.DS.‘uploads‘.DS.‘excel‘);
    //上传文件成功
    if ($info) {
      //引入PHPExcel类
      vendor(‘PHPExcel.PHPExcel.Reader.Excel5‘);
      //获取上传后的文件名
      $fileName = $info->getSaveName();
      //文件路径
      $filePath = ‘public/uploads/excel/‘.$fileName;
      //实例化PHPExcel类
      $PHPReader = new \PHPExcel_Reader_Excel5();
      //读取excel文件
      $objPHPExcel = $PHPReader->load($filePath);
      //读取excel文件中的第一个工作表
      $sheet = $objPHPExcel->getSheet(0);
      $allRow = $sheet->getHighestRow();  //取得总行数
      //$allColumn = $sheet->getHighestColumn();  //取得总列数
      //从第二行开始插入,第一行是列名
      for ($j=2; $j <= $allRow; $j++) {
        $data[‘name‘] = $objPHPExcel->getActiveSheet()->getCell("A".$j)->getValue();
        $data[‘tel‘] = $objPHPExcel->getActiveSheet()->getCell("B".$j)->getValue();
        $data[‘addr‘] = $objPHPExcel->getActiveSheet()->getCell("C".$j)->getValue();
        $last_id = Db::table(‘users‘)->insertGetId($data);//保存数据,并返回主键id
        if ($last_id) {
          echo "第".$j."行导入成功,users表第:".$last_id."条!<br/>";
        }else{
          echo "第".$j."行导入失败!<br/>";
        }
      }
    }else{
      echo "上传文件失败!";
    }
  }
   

输出结果:

注意:

引入第三方类库使用vendor();是按照命名空间的形式。底层代码会把“ . ”自动替换成" / ",所以使用“ / ”时要用“ . ”代替;

以上代码可以直接复制使用,但是数据库相关信息要改成你自己的!

总结

以上所述是小编给大家介绍的Thinkphp5+PHPExcel实现批量上传表格数据功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会

原文链接:http://www.cnblogs.com/zxf100/archive/2017/11/28/7908659.htm

时间: 2024-10-06 22:25:45

Thinkphp5+PHPExcel实现批量上传表格数据功能的相关文章

KindEditor3.x-自动上传Word图片功能.

Chrome+IE默认支持粘贴剪切板中的图片,但是我要发布的文章存在word里面,图片多达数十张,我总不能一张一张复制吧?Chrome高版本提供了可以将单张图片转换在BASE64字符串的功能.但是无法处理多张图片.而且转换成BASE64后是作为内容一起提交给服务器,不能够将图片单独保存在另外一台服务器中.如果需要单独保存则需要自已进行处理.比较麻烦. 我希望打开Word或者WPS文档后,复制内容然后直接粘贴到富文本编辑器中,编辑器自动将图片批量上传到服务器中,无论文档中有多少张图片,编辑器都全部

百度地图云麻点之批量上传、实时显示数据篇

上篇博文你可能用到的百度地图效果(付源码)介绍了几个比较实用的百度地图特效,其中重点介绍了海量数据上传及响应的问题,前端展示可以通过LBS云麻点来展示,通过这个可以解决批量数据Marker响应特慢的性能问题.首先在百度云服务器上建完表之后,我们可以通过后台的管理平台直接把数据传上去,作为我们的初始数据.这部分数据有了之后,接下来要做的就是想办法手动同步数据,更智能一点就是实时同步数据,接下来就带你一步步实现这个过程. 这次在正文开始之前,我想先做一次吐槽君.最近压力有点儿大,先来发一下牢骚.三人

Android网络编程之使用HttpClient批量上传文件

请尊重他人的劳动成果,转载请注明出处:Android网络编程之使用HttpClient批量上传文件 我曾在<Android网络编程之使用HTTP访问网络资源>一文中介绍过HttpCient的使用,这里就不在累述了,感兴趣的朋友可以去看一下.在这里主要介绍如何通过HttpClient实现文件上传. 1.预备知识: 在HttpCient4.3之前上传文件主要使用MultipartEntity这个类,但现在这个类已经不在推荐使用了.随之替代它的类是MultipartEntityBuilder. 下面

[Pulgin] 利用swfupload实现java文件批量上传

URL:http://blog.csdn.net/xuweilinjijis/article/details/8876305 之前在网上找过很多相关资料,很多所谓的批量上传都是忽悠人的,真正的批量上传指的是 用户一次性可以选择多个文件,然后上传是将所有选取的文件上传到服务器.java中真正可以实现批量上传的技术大致有两种:一种是通过flash:一种是 通过applet:不过html5也可以支持批量拖选.两种方式有各自的优缺点,其中flash对于浏览器兼容性较好,基本可以满足市面上大众浏览器,缺

Android利用网络编程HttpClient批量上传(一个)

请尊重他人的劳动成果.转载请注明出处:Android网络编程之使用HttpClient批量上传文件 我曾在<Android网络编程之使用HTTP訪问网络资源>一文中介绍过HttpCient的使用,这里就不在累述了,感兴趣的朋友能够去看一下.在这里主要介绍怎样通过HttpClient实现文件上传. 1.预备知识: 在HttpCient4.3之前上传文件主要使用MultipartEntity这个类,但如今这个类已经不在推荐使用了. 随之替代它的类是MultipartEntityBuilder. 以

转 Android网络编程之使用HttpClient批量上传文件 MultipartEntityBuilder

请尊重他人的劳动成果,转载请注明出处:Android网络编程之使用HttpClient批量上传文件 http://www.tuicool.com/articles/Y7reYb 我曾在<Android网络编程之使用HTTP访问网络资源>一文中介绍过HttpCient的使用,这里就不在累述了,感兴趣的朋友可以去看一下.在这里主要介绍如何通过HttpClient实现文件上传. 1.预备知识: 在HttpCient4.3之前上传文件主要使用MultipartEntity这个类,但现在这个类已经不在推

亚马逊如何批量上传Flat.File 上传文档制作

亚马逊批量上传简介众所周知的,亚马逊是可以通过表格批量上传,通过批量上传的方式能更快的上架产品,更好的管理线上的产品.工厂如果能直接通过数据包给分销客户,那么分销客户拿到数据,稍微修改优化一下标题,关键,加品牌,就能很快的上架铺货您的产品了亚马逊批量上传优势Excel 表格管理产品通过制作的 excel 表格首次绑定好账户,无需登录亚马逊后台即可一键同步关联线上库存产品,编辑好的表格 3000 个产品即可以在数分钟内上架,下架操作,合理利用excel 公式能在数分钟内批量增加品牌.替换关键字.批

不带插件 ,自己写js,实现批量上传文件及进度显示

今天接受项目中要完成文件批量上传文件而且还要显示上传进度,一开始觉得这个应该不是很麻烦,当我在做的时候遇到了很多问题,很头疼啊. 不过看了别人写的代码,自己也测试过,发现网上好多都存在一些问题,并不是自己想要的.然后自己查阅各种资料,经过自己总结,最终完成了这个功能. 如果大家有什么问题可以提出来,一起交流,学习.有什么不对的地方也指出来,我也虚心学习.自己也是刚写博客,您们的赞是我写博客的动力,谢谢大家. 条件:我采用struts2,java ,ajax,FormData实现; 1.实现的逻辑

简单项目之批量上传

之前做一小项目中需要批量上传功能,以前都是用的网上现成的Uploadify.WebUpload等插件,心想既然是小项目还是不用插件,所以不如自己写一个(非插件). 1.页面 批量上传页面 1 <form action="" id="formid"> 2 @Html.Hidden("filelist") 3 <table> 4 <tr> 5 <td> 6 文件: 7 </td> 8 <