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. Visual Studio 2015 将json转换为实体类

    最新写的一个接口需要接收json参数,然后序列化为实体类然后再进行后面的逻辑处理.因为json中键值对比较多,逐一去手写实体中的每个属性太麻烦,于是寻思是否有这样的工具可以将json转换为实体类. 经 ...

  2. 【BZOJ】 Hash Killer I II III

    前言 这里只是一个整理... Solution Hash Killer I Hash Killer II

  3. 从Redis生成数据表主键标识

    对于MySql的全局ID(主键),我们一般采用自增整数列.程序生成GUID.单独的表作为ID生成器,这几种方案各有优劣,最终效率都不能说十分理想(尤其海量数据下),其实通过Redis的INCR可以很方 ...

  4. Redis 分布式锁进化史(解读 + 缺陷分析)

    Redis分布式锁进化史 近两年来微服务变得越来越热门,越来越多的应用部署在分布式环境中,在分布式环境中,数据一致性是一直以来需要关注并且去解决的问题,分布式锁也就成为了一种广泛使用的技术,常用的分布 ...

  5. Java线程池(ThreadPoolExecutor)原理分析与使用

    在我们的开发中"池"的概念并不罕见,有数据库连接池.线程池.对象池.常量池等等.下面我们主要针对线程池来一步一步揭开线程池的面纱. 使用线程池的好处 1.降低资源消耗 可以重复利用 ...

  6. 自定义线程池reject策略

    import java.util.Date;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.Rej ...

  7. SQL分别求行、列的平均值

    日常工作中,会需要用SQL求平均值,分别是求某一项的平均值或求某一个对象的平均值,放到表格就是求一行中的几个字段的平均值和求一列的平均值. 第一种:[列的平均值]AVG:这个函数相信大家都不陌生的,求 ...

  8. html css 其他常用 onclick跳转

    opacity: 0.5. 0-1 透明度 cursor: pointer;手指 clear:both 清楚浮动 我是医生不是人 文本内容超出框word-wrap:break-word; word-b ...

  9. 线程安全-005-synchronized其他概念

    一.Synchornized锁重入 例子程序: package com.lhy.thread01; public class SyncDouble1 { public synchronized voi ...

  10. 4 spring 创建对象的三种方式

    方式1. 通过构造方法创建     1.1 无参构造创建:默认情况.     1.2 有参构造创建:需要明确配置         1.2.1 需要在类中提供有参构造方法         1.2.2 在 ...