今天看的是PHPExcel这个扩展库,Comporse 下载不下来,最后只能自己去github里面手动下载,但有一个问题就是下载下来的PHPExcel没有命名空间,所以框架里面的use根本引入不进去,这就变得很尴尬,最后看了Tp5的手册,扩展库里面有个手动引入的办法:

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

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

控制器代码如下:

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

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

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

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

前端代码:

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="http://localhost/chexian5.0/index.php/index/excel/intoexcel" enctype="multipart/form-data" method="post">
<input type="file" name="excel" />
<input type="submit" value="导入">
</form>
</body>
</html>

TP5.0 PHPExcel 数据表格导出导入(原)的更多相关文章

  1. TP5.0 PHPExcel 数据表格导出导入(引)

    TP5.0 PHPExcel 数据表格导出导入(引) 今天看的是PHPExcel这个扩展库,Comporse 下载不下来,最后只能自己去github里面手动下载,但有一个问题就是下载下来的PHPExc ...

  2. TP5.0 PHPExcel 数据表格导出(原)

    今天看的是PHPExcel这个扩展库,Comporse 下载不下来,最后只能自己去github里面手动下载,但有一个问题就是下载下来的PHPExcel没有命名空间,所以框架里面的use根本引入不进去, ...

  3. Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(下)

    <Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上)> <Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(下)> 目的:指导项 ...

  4. Oracle基础 数据泵导出/导入Expdp/impdp(转)

    一.EXPDP和IMPDP使用说明 Oracle Database 10g引入了最新的数据泵(Data Dump)技术,数据泵导出导入(EXPDP和IMPDP)的作用 1)实现逻辑备份和逻辑恢复. 2 ...

  5. Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上)

    <Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上)> <Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(下)> 目的:指导项 ...

  6. PostgreSQL数据的导出导入 save your data!

    PostgreSQL数据的导出导入 导出PostgreSQL数据库中的数据: $ pg_dump -U postgres  -f mydatabase.sql  mydatabase 导入数据时首先创 ...

  7. PostgreSQL数据的导出导入

    PostgreSQL数据的导出导入 导出PostgreSQL数据库中的数据: $ pg_dump -U postgres  -f mydatabase.sql  mydatabase 导入数据时首先创 ...

  8. 数据泵导出/导入Expdp/impdp

    一下转自 http://blog.csdn.net/jionjionyoushen/article/details/6789686 数据泵导出/导入Expdp/impdp Oracle 10g引入了D ...

  9. linux mysql 数据库操作导入导出 数据表导出导入

    linux mysql 数据库操作导入导出 数据表导出导入 1,数据库导入 mysql -uroot -p show databases; create database newdb; use 数据库 ...

随机推荐

  1. TTL和COMS电平匹配以及电平转换的方法

    一.TTL TTL集成电路的主要型式为晶体管-晶体管逻辑门(transistor-transistor logic gate),TTL大部分都采用5V电源.1.输出高电平Uoh和输出低电平UolUoh ...

  2. left join on +多条件与where区别

    left join on +多条件与where区别 重点 先匹配,再筛选where条件. 本文将通过几个例子说明两者的差别. 1. 单个条件 select * from product a left ...

  3. TeamCity Build 步骤的执行策略

    TeamCity 会根据前一个 build 步骤的返回状态和当前的 build 状态来综合判断是否运行下一个 build 步骤.1 失败状态 当满足下面条件时 build 步骤的状态被确定为失败: b ...

  4. 【Rice】Cultivar versus Variety

    From Cindy Haynes, Department of Horticulture   As a horticulturist, it is important that I use the ...

  5. leetcode 二进制求和 python

    class Solution: def addBinary(self, a, b): """ :type a: str :type b: str :rtype: str ...

  6. Unity入门一,什么是GameObject,MonoBehaviour

    Unity入门一,什么是GameObject,MonoBehaviour GameObject和Component Unity是一个Component-Based的引擎,所有物体都是GameObjec ...

  7. 用户和用户组y哦不过y哦那个好

    一.用户和用户组的简介? 介绍:https://blog.csdn.net/Na2Co3_Ren/article/details/74502309 二.用户可以分为3类? 1.主人:所有者的名字 2. ...

  8. 物理层PHY 和 网络层MAC

    PHY模块简介 物理层位于OSI最底层,物理层协议定义电气信号.线的状态.时钟要求.数据编码和数据传输用的连接器. 物理层的器件称为PHY. 上图里的灰色方框图里的就是PHY芯片内部模块图. MAC器 ...

  9. webform运行时弹出JavaScript的alert窗口

    https://stackoverflow.com/questions/9720143/asp-net-web-application-message-box Or create a method l ...

  10. PowerShell自定义函数定义及调用

    PowerShell是一种命令集,也有自己的语法定义及函数.本文主要介绍如何自定义powershell函数及如何调用,当初在写PowerShell自定义函数的时候查阅了很多资料都没找到如何调用自定义函 ...