今天看的是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>

最新文章

  1. 分享在winform下实现左右布局多窗口界面-续篇
  2. ASP.NET MVC过滤器中权限过滤器ValidateAntiForgeryToken的用法(Post-Only)
  3. server返回arraylist时,juqery在客户端的处理
  4. 【转】【C#】C#性能优化总结
  5. UVA 11374 Airport Express 机场快线(单源最短路,dijkstra,变形)
  6. SpringMVC4.2.4 xml配置
  7. Binary Tree Inorder Traversal 解题思路 &#215;
  8. android窗体动画:activity启动从底部向上滑动出现,关闭的时候从顶部向下滑动消失的动画实现
  9. brew 更换国内源(镜像)
  10. poj 3250 Bad Hair Day (单调栈)
  11. C—动态内存分配之malloc与realloc的区别
  12. ffdshow 源代码分析 5: 位图覆盖滤镜(总结)
  13. Git复制已有分支到新分支开发
  14. e297: write error in swap file
  15. selenium3+python3.6爬页面源码的代码
  16. codeforces616B
  17. Microsoft.AspNet.Identity: UserID用整型数据表示, 而不是GUID
  18. SLAM的前世今生
  19. PHP从入门到精通(六)
  20. B - SETI POJ - 2065 (高斯消元)

热门文章

  1. 2018-2019-2 网络对抗技术 20165316 Exp5 MSF基础应用
  2. console.log在IE浏览器中会有异常
  3. 火狐开发----Web开发者工具
  4. 使用Semaphore同步,经典银行账户问题
  5. C#线程同步(5)- 信号量 Semaphore
  6. 自动化运维 --- git
  7. vs编译过程中出的错
  8. Vue学习——学习vue必须了解的几个知识点
  9. PHP 获取当前访问的完整URL
  10. 使用VSCode调试Jest