public function studentImportExcel(){

if (!empty ( $_FILES)){

$upload = new \Think\Upload();                      // 实例化上传类

$upload->maxSize   =     10485760 ;                 // 设置附件上传大小

$upload->exts      =     array('xls','xlsx');       // 设置附件上传类型

$upload->rootPath  = './Public/Excel/';             // 设置附件上传根目录

$upload->autoSub   = false;                         // 将自动生成以photo后面加时间的形式文件夹,关闭

// 上传文件

$info   =   $upload->upload();                                   // 上传文件

$exts   = $info['excel']['ext'];                                 // 获取文件后缀

$filename = $upload->rootPath.$info['excel']['savename'];        // 生成文件路径名

if(!$info) {                                                     // 上传错误提示错误信息

$this->error($upload->getError());

}else{                                                           // 上传成功

import("Org.Util.PHPExcel");                                 // 导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入

$PHPExcel = new \PHPExcel();                                 // 创建PHPExcel对象,注意,不能少了\

if ($exts == 'xls') {                                        // 如果excel文件后缀名为.xls,导入这个类

import("Org.Util.PHPExcel.Reader.Excel5");

$PHPReader = new \PHPExcel_Reader_Excel5();

} else

if ($exts == 'xlsx') {

import("Org.Util.PHPExcel.Reader.Excel2007");

$PHPReader = new \PHPExcel_Reader_Excel2007();

}

$PHPExcel = $PHPReader->load($filename);                     // 载入文件

$currentSheet = $PHPExcel->getSheet(0);                      // 获取表中的第一个工作表,如果要获取第二个,把0改为1,依次类推

$allColumn = $currentSheet->getHighestColumn();              // 获取总列数

$allRow = $currentSheet->getHighestRow();                    // 获取总行数

for ($currentRow = 0; $currentRow <= $allRow; $currentRow ++) {// 循环获取表中的数据,$currentRow表示当前行,从哪行开始读取数据,索引值从0开始

for ($currentColumn = 'A'; $currentColumn <= $allColumn; $currentColumn ++) {// 从哪列开始,A表示第一列

$address = $currentColumn . $currentRow;             // 数据坐标

$ExlData[$currentRow][$currentColumn] = $currentSheet->getCell($address)->getValue();// 读取到的数据,保存到数组$arr中

}

}

$Hint = new \Operation\Controller\HintController();          // 生成操作类对象

$data = studentImportExcel_RAW($ExlData);                    // 调用公用方法的读数组并写入数据库操作

$users = M('users');                                         // 生成数据库对象

$result = $users->addAll($data);                             // 批量写入数据库

if ($result) {                                               // 验证

$Hint->mysuccee("导入成功", "2", "Admin/Users/studentManage");// 跳转学生管理页面

} else {

$Hint->myerror("导入失败,原因可能是excel表中有些用户已被注册。或表格格式错误","5");// 提示错误

}

}

}else {

$this->display();

}

}

function  studentImportExcel_RAW($ExlData){   // 将导入表中的数据添加到  数据库数组中去

$Hint = new \Operation\Controller\HintController();     // 生成操作类对象

for($i = 2,$j=0;$i<sizeof($ExlData);$i++,$j++){

$dataList[] = array(

'username'=>$ExlData[$i]['A'],

'pwd'     =>MD5(11),

'realname'=>$ExlData[$i]['B'],

'stunum'  =>$ExlData[$i]['C'],

'email'   =>$ExlData[$i]['D'],

'phone'   =>$ExlData[$i]['E'],

'photo'   =>$Hint->randPhoto(),

'role'    =>'1',

'intro'   =>'这家伙很懒什么都没留下',

'regdate' =>date('Y-m-d H:i:s', time())         // 写入注册时间

);

}

return $dataList;

}

phpexcel导入数据库 基于thinkphp3.2的更多相关文章

  1. ThinkPhp3.2.3 使用phpExcel导入数据

    public function uploadExcel(){ if (!empty($_FILES)){ $upload = new \Think\Upload(); // 实例化上传类 $uploa ...

  2. thinkphp phpexcel导入

    上次做了一个基于tp3.2.3的phpexcel导出,这次是phpexcel导入,准备材料phpexcel(不知道下载地址的查看我上一篇博文),虽说是基于thinkphp3.2.3来的,也只不过是引入 ...

  3. Thinkphp 用PHPExcel 导入Excel

    搞了个简单的Excel导入, 用的是PHPExcel(百科:用来操作Office Excel文档的一个PHP类库, 基于微软的OpenXML标准和PHP语言) 好, 不说了, 开始吧... 首先得有P ...

  4. [Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!

    引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...

  5. (一)熟悉执行流程——基于ThinkPHP3.2的内容管理框架OneThink学习

    ThinkPHP作为国内具有代表性的PHP框架,经过多年的发展,受到越来越多公司与开发者的青睐.我也在忙里偷闲中抽出部分时间,来学习这个优秀的框架.在开始学习这个框架时,最好通过实例来学习,更容易结合 ...

  6. 使用thinkphp框架实现Excel导入数据库

    之前讲过php实现Excel导出数据库的随笔,链接:https://www.cnblogs.com/nuanai/p/6727711.html 之前的项目用到较多的就是Excel导出,现在用到了Exc ...

  7. phpexcel导入数据出现PHPExcel_RichText Object解决办法

    在导入excel的时候会出现异常情况,有的问题出现PHPExcel_RichText object,错误代码如下 PHPExcel_RichText Object ( [_richTextElemen ...

  8. PHPExcel 导入Excel数据 (导出下一篇我们继续讲解)

    一:使用composer下载 phpoffice/phpexcel 或者直接下载安装包 composer require phpoffice/phpexcel 二 1:导入数据 原理:读取文件,获取文 ...

  9. 转:[Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!

    引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...

随机推荐

  1. (转)Spring整合Redis作为缓存

           采用Redis作为Web系统的缓存.用Spring的Cache整合Redis. 一.关于redis的相关xml文件的写法 <?xml version="1.0" ...

  2. 批处理(.bat)中使用相对路径

    批处理中使用相对路径,只需要用cd /d %~dp0代替绝对路径就可以了. ->cd /d ->%~dp0 %0为当前批处理文件 %~d0 是指批处理所在的盘符 %~dp0 是指批处理所在 ...

  3. ReactiveCocoa框架学习2

    昨天内容回顾 信号类:表示有数据产生,信号类不发送数据 注意:不同的信号,订阅方式不同 RACSignal 创建RACDynamicSignal信号 -> didSubscribe(block) ...

  4. 如何判断Linux是否适合你

    如果你厌烦了windows,或者想延长旧pc的寿命,也或者想给小孩使用一款os,linux都能满足你. 开源操作系统linux的关键优势: - 免费的. - 大部分linux软件也是免费的. - li ...

  5. Qt学习之路: 国际化(上)

      原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://devbean.blog.51cto.com/448512/244689 2D ...

  6. javascript、jsp

    1.javascript:简称js 在<body>与 </body>之间 加入<script> </script>即可 最好在<head>与 ...

  7. 用NodeJs实现优先级队列PQueue

    优先级队列(PriorityQueue)是个很有用的数据结构,很多编程语言都有实现.NodeJs是一个比较新潮的服务器语言,貌似还没有提供相关类.这些天有用到优先级队列,因为时间很充足,闲来无事,就自 ...

  8. java Map使用Object 做为Key的问题

    近期在看dnsjava 源码的时候,不经意间发现一个自己没有想过的问题: HashMap 如何使用key去查找对应的value的,这个问题很难用语言描述的清楚,那就使用代码来进行说明吧! public ...

  9. vc++ 最小化到托盘的详细实现

    在VC++中,想实现将MFC最小化到系统托盘,需要调用NOTIFYICONDATA类,并注册相应的消息,以下详细讲解如何实现: 1.声明一个NOTIFYICONDATA类,也就是NOTIFYICOND ...

  10. 设计模式——单例模式 (C++实现)

    单例模式也称为单件模式.单子模式,可能是使用最广泛的设计模式.其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享.有很多地方需要这样的功能模块,如系统的日志输出,G ...