1、先在github里面下载PHPexcel这个类库

2、解压之后把它复制到extend里面

控制器代码如下:

 1 <?php
2 /**
3 * Created by PhpStorm.
4 * User: luxiao
5 * Date: 2017/5/8
6 * Time: 16:49
7 */
8 namespace app\index\controller;
9
10 use think\Loader;
11 use think\Controller;
12
13 class Excel extends Controller
14 {
15 function excel()
16 {
17 $path = dirname(__FILE__); //找到当前脚本所在路径
18 Loader::import('PHPExcel.Classes.PHPExcel');  //手动引入PHPExcel.php
19 Loader::import('PHPExcel.Classes.PHPExcel.IOFactory.PHPExcel_IOFactory');  //引入IOFactory.php 文件里面的PHPExcel_IOFactory这个类
20 $PHPExcel = new \PHPExcel();  //实例化
21
22 $PHPSheet = $PHPExcel->getActiveSheet(); 
23 $PHPSheet->setTitle("demo"); //给当前活动sheet设置名称
24 $PHPSheet->setCellValue("A1","姓名")->setCellValue("B1","分数");//表格数据
25 $PHPSheet->setCellValue("A2","张三")->setCellValue("B2","2121");//表格数据
26 $PHPWriter = \PHPExcel_IOFactory::createWriter($PHPExcel,"Excel2007");  //创建生成的格式
27 header('Content-Disposition: attachment;filename="表单数据.xlsx"');  //下载下来的表格名
28 header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
29 $PHPWriter->save("php://output"); //表示在$path路径下面生成demo.xlsx文件
30 }
31 }

调用excel方法就可以生成一个表格了,后续的根据自己的需要自己去写代码.

PHPexcel 表格数据导入数据库 city 表,在这之前自己先创建好表单,我这次用的都是地址数据表做的测试:

 1 function inserExcel()
2 {
3 Loader::import('PHPExcel.Classes.PHPExcel');
4 Loader::import('PHPExcel.Classes.PHPExcel.IOFactory.PHPExcel_IOFactory');
5 Loader::import('PHPExcel.Classes.PHPExcel.Reader.Excel5');
6 //获取表单上传文件
7 $file = request()->file('excel');
8 $info = $file->validate(['ext' => 'xlsx'])->move(ROOT_PATH . 'public' . DS . 'uploads');  //上传验证后缀名,以及上传之后移动的地址
9 if ($info) {
10 // echo $info->getFilename();
11 $exclePath = $info->getSaveName(); //获取文件名
12 $file_name = ROOT_PATH . 'public' . DS . 'uploads' . DS . $exclePath; //上传文件的地址
13 $objReader =\PHPExcel_IOFactory::createReader('Excel2007');
14 $obj_PHPExcel =$objReader->load($file_name, $encode = 'utf-8'); //加载文件内容,编码utf-8
15 echo "<pre>";
16 $excel_array=$obj_PHPExcel->getsheet(0)->toArray(); //转换为数组格式
17 array_shift($excel_array); //删除第一个数组(标题);
18 $city = [];
19 foreach($excel_array as $k=>$v) {
20 $city[$k]['Id'] = $v[0];
21 $city[$k]['code'] = $v[1];
22 $city[$k]['path'] = $v[2];
23 $city[$k]['pcode'] = $v[3];
24 $city[$k]['name'] = $v[4];
25 }
26 Db::name('city')->insertAll($city); //批量插入数据
27 } else {
28 echo $file->getError();
29 }

前端代码:

 1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <title>Title</title>
6 </head>
7 <body>
8 <form action="http://localhost/chexian5.0/index.php/index/excel/intoexcel" enctype="multipart/form-data" method="post">
9 <input type="file" name="excel" />
10 <input type="submit" value="导入">
11 </form>
12 </body>
13 </html>

TP5手动引入PHPEXCEL的方法的更多相关文章

  1. TP5 中引入第三方类库

    通过了解tp5的目录结构,我们知道其中有两个目录是纺织扩展类库文件的. extend是放置自定义或者其他类文件的. vendor目录是放置composer类库文件的. 当我们的第三方类库文件是下载的, ...

  2. vue-cli3.0以上项目中引入jquery的方法

    这里配置的是vue-cli3.0引入jquery的方法,不是vue-cli2.0的配置方法 一.安装jquery npm install jquery --save 二.在vue.config.js ...

  3. thinkphp引入PHPExcel类---thinkPHP类库扩展-----引入没有采用命名空间的类库

    最近项目中遇到引入PHPExcel第三方类库 但是下载的phpExcel类没有命名空间,而且所有接口文件的命名都是以.php结尾  而不是tp中的.class.php 解决办法很简单:在引入没有采用命 ...

  4. CSS系列:在HTML中引入CSS的方法

    HTML与CSS是两个作用不同的语言,它们同时对一个网页产生作用,因此必须将CSS与HTML链接在一起使用.在HTML中,引入CSS的方法主要有4种:行内式.内嵌式.导入式和链接式. 1. 行内式 行 ...

  5. 自己实现简单的AOP(二)引入Attribute 为方法指定增强对象

    话续前文 : 自己实现简单的AOP(一)简介 在前一篇文章中,对AOP的实现方式做了一个简单介绍.接下来,引入Attribute 为方法指定增强对象,由此实现一个简单的AOP. 注意:指定的是增强对象 ...

  6. Magento后台手动修改订单状态方法及手动修改方法php

    订单详细内容页手动修改订单状态方法: 打开此文件:app\design\adminhtml\default\default\template\sales\order\view\history.phtm ...

  7. tp5中的一些小方法

    // 当使用一个新页面替换当前页面的body后,body刷新了,所选择的select值就不能保存住,解决方法如下: 作业题目<select> <option>--请选择--&l ...

  8. Windows服务的手动添加和删除方法

    Windows服务的手动添加和删除方法 服务,是指执行指定系统功能的程序.例程或进程,以便支持其他程序,尤其是低层(接近硬件)程序.其实,服务就是一种特殊的应用程序,它从服务启动开始就一直处于运行状态 ...

  9. php中禁止非法调用和硬路径引入文件的方法

    php中禁止非法调用和硬路径引入文件的方法 在php中有一些公共的文件为了方便,我们会做一个公共文件,让不用的文件共同调用.为了禁止公共文件被非常单独调用,可以在文件上做一个常量,禁止非常调用:在公共 ...

随机推荐

  1. Linux 查看IP

    UBuntu 系统下 按Ctrl+Alt+T 唤出终端 在终端输入: ifconfig 命令 点击回车 就可以看到自己电脑在局域网的IP地址了 图中第二行 inet 地址:192.168.1.101 ...

  2. fscanf_s与scanf_s的宽度参数与缓冲区参数分析

    fscanf_s函数 在文件操作中经常会用到fscanf这个函数,但是在VC和VS中会有警告 意思是编译器觉得fscanf不安全,叫你考虑用一下fscanf_s这个函数来代替fscanf,fscanf ...

  3. Android 追加写入文件的三种方法

    一.使用FileOutputStream 使用FileOutputStream,在构造FileOutputStream时,把第二个参数设为true public static void method1 ...

  4. numpy 介绍

    NumPy系统是Python的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩 ...

  5. shell之实战应用一(查找xml文档中的关键字段)

      前几天同事问我一个问题,说如下的文档中,如何把name后面的字段(红色框中的字段)单独打印出来?

  6. 201. Orchard学习 一、基础

    一.项目介绍 Orchard是一个免费和开源的社区交流项目,致力于在ASP.NET平台开发应用程序和可重用性组件.它将创建用于ASP.Net应用和扩展的共享组件,以及修改这些组件以便使其应用于终端用户 ...

  7. 关于 Spring Security 5 默认使用 Password Hash 算法

    账户密码存储的安全性是一个很老的话题,但还是会频频发生,一般的做法是 SHA256(userInputpwd+globalsalt+usersalt) 并设置密码时时要求长度与大小写组合,一般这样设计 ...

  8. dart之旅(二)- 内建类型

    目录 number 类型 字符串 布尔类型 像大多数语言一样,dart 也提供了 number,string,boolean 等类型,包括以下几种: numbers strings booleans ...

  9. struts2 拦截器弊端

    struts2 怎样在action内获得fielderror

  10. Java基础 - 线程(一)

    一.什么是线程 首先,介绍一下线程.进程的概念. 进程是操作系统分配资源的最小单元,线程是操作系统调度的最小单元.进程是指运行中的应用程序,Windows任务管理器进程窗口看到的每一项都是一个进程.每 ...