现实中,我们往往很多地方都需要这样批量导入数据,除了phpexcel还有csv等方法可以解决

下面详细介绍一下使用方法

首先在官方下载安装包解压到本地,然后复制保存到tp框架下的vendor目录下

html页面如下

下面是后端代码:

public function column(){
        $grade=D('school')->where(array('parent_id'=>1))->select();
        $school = D('schooll')->select();
        $this->assign('school',$school);
        $this->assign('grade',$grade);
        if(IS_POST){
          $data_p = I('post.');
        if ($data_P['sno']==' ') {
                 $this->ajaxReturn(array('nr' => '学号已存在!', 'sf' => 0));
          }elseif($data_P['sname']==' '){
                 $this->ajaxReturn(array('nr' => '姓名不为空!', 'sf' => 0));
            }elseif($data_P['grade']==' '){
                  $this->ajaxReturn(array('nr'=> '不为空','sf'=>'0'));
            }elseif($data_P['major']==' '){
                  $this->ajaxReturn(array('nr'=>'不为空','sf'=>'0'));
            }elseif($data_P['classs']==' '){
                  $this->ajaxReturn(array('nr'=>'不为空','sf'=>'0'));
            }elseif($data_P['school']==' '){
                  $this->ajaxReturn(array('nr'=>'不为空','sf'=>'0'));
            }else{
          $student = M('student')->add(array('sno'=>$data_p['sno'],'passwd'=>md5($data_p['passwd']),'sname'=>$data_p['sname'],'zt'=>$data_p['checkresult'],'majorname'=>$data_p['major'],'classname'=>$data_p['classs'],'gradename'=>$data_p['school'],'schoolname'=>$data_p['grade']));
              }
              if ($student) {
                        $this->ajaxReturn(array('nr' => '添加成功'.$data_P['major'], 'sf' => 0));
                    } else {
                        $this->ajaxReturn(array('nr' => '添加失敗!', 'sf' => 0));
                      }
                  }
         $this->display('index/column');
        }

        public function upload() {
                if (!empty($_FILES)) {
                  $config = array(
                'exts' => array('xlsx','xls'),
                'maxSize' => 3145728,
                'rootPath' =>"./Excel/",
                'subName' => array('date','Ymd'),
           );

           $upload = new \Think\Upload($config);

            if (!$info = $upload->upload()){

               $this->error($upload->getError());
                
              }else{
          
           //vendor('PHPExcel.PHPExcel');/////引入类库

           //vendor('PHPExcel.Reader.Excel5');
           import("vendor.PHPExcel");
           import("vendor.PHPExcel.Reader.Excel5");
           $objPHPExcel = new \PHPExcel();/////初始化引入的方法

           $PHPReader=new \PHPExcel_Reader_Excel5();

          $file_name=$upload->rootPath.$info['excel']['savepath'].$info['excel']['savename'];
            }
            $objReader = $PHPReader->load($file_name);
              
         $extension = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
              //判断导入表格后缀格式
                if ($extension == 'xlsx') {

                    $objReader =\PHPExcel_IOFactory::createReader('Excel2007');

                    $objPHPExcel =$objReader->load($file_name, $encode = 'utf-8');
                      
                } elseif($extension == 'xls'){

                    $objReader =\PHPExcel_IOFactory::createReader('Excel5');

                    $objPHPExcel =$objReader->load($file_name, $encode = 'utf-8');
                       
               }

          $sheet =$objPHPExcel->getSheet(0);//获取表中第一个工作表

          $highestRow = $sheet->getHighestRow();//取得总行数

          $highestColumn =$sheet->getHighestColumn(); //取得总列数
          
          for($currentRow=1;$currentRow<=$highestRow;$currentRow++){

            for($currentColumn='A';$currentColumn<=$highestColumn;$currentColumn++){
              $address=$currentColumn.$currentRow;
              $arr[$currentRow][$currentColumn]=$sheet->getCell($address)->getValue();
            }
      for ($i = 2; $i <= $highestRow; $i++) {

          $data_p['sno'] =$objPHPExcel->getActiveSheet()->getCell("A" . $i)->getValue();

         $passwd =$objPHPExcel->getActiveSheet()->getCell("B" .$i)->getValue();

            $data_p['passwd']=md5($passwd);

         $data_p['sname'] =$objPHPExcel->getActiveSheet()->getCell("C" .$i)->getValue();

         $data_p['zt'] = '0';

         $data_p['majorname'] = $objPHPExcel->getActiveSheet()->getCell("D". $i)->getValue();

         $data_p['classname'] =$objPHPExcel->getActiveSheet()->getCell("E" .$i)->getValue();

         $data_p['gradename'] =$objPHPExcel->getActiveSheet()->getCell("F" . $i)->getValue();

         $data_p['schoolname'] =$objPHPExcel->getActiveSheet()->getCell("G" . $i)->getValue();

         $ex=M('Student')->add($data_p);
              }
      if($ex){
                $this->success('导入成功!');
         }else{
                $this->error("请选择上传的文件");

                  }

    }
}
             


         好的具体的就是这些。哪里不懂可以留言1119702968@qq.com咨询。

Thinkphp使用phpexcel导入文件并写入数据库的更多相关文章

  1. Thinkphp 用PHPExcel 导入Excel

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

  2. (OAF)jdeveloper集成log4j并将日志输出到指定文件并写入数据库

    参考: How to configure Log4j in JDev 11g Ever wanted to use log4j in your adf project ? Well though Or ...

  3. nio实现文件读取写入数据库或文件

    1.nio实现读取大文件,之后分批读取写入数据库 2.nio实现读取大文件,之后分批写入指定文件 package com.ally; import java.io.File; import java. ...

  4. PHPExcel使用-使用PHPExcel导入文件

    导入步骤: 1. 实例化excel读取对象 2. 加载excel文件 ----------------> ( 1>. 全部加载. 2>. 选择加载. ) 3. 读取excel文件 - ...

  5. Oracle数据泵远程导入文件到本地数据库

    --以dba身份登录 C:\Users\Administrator>sqlplus / as sysdba --创建用户 SQL> create user bfzg0828 identif ...

  6. 使用phpExcel导入Excel进入Mysql数据库

    1.http://phpexcel.codeplex.com/下载phpExcel 2. <? require_once 'PHPExcel.php'; require_once 'PHPExc ...

  7. ThinkPhp 使用PhpExcel导出导入多语言文件

    在ThinkPHP 里已经实现了多语言功能,只要在指定的目录下创建对应的语言文件并填充内容,即可实现多语言功能 而多语言的翻译却是一个很麻烦的事情,因为客户特定的行业问题导致我们翻译可能是不准确的 于 ...

  8. 十万级百万级数据量的Excel文件导入并写入数据库

    一.需求分析 最近接到一个需求,导入十万级,甚至可能百万数据量的记录了车辆黑名单的Excel文件,借此机会分析下编码过程; 首先将这个需求拆解,发现有三个比较复杂的问题: 问题一:Excel文件导入后 ...

  9. ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例

    这篇文章主要介绍了ThinkPHP使用PHPExcel实现Excel数据导入导出,非常实用的功能,需要的朋友可以参考下 本文所述实例是使用在Thinkphp的开发框架上,要是使用在其他框架也是同样的方 ...

随机推荐

  1. Node.js之异步流控制

    前言 在没有深度使用函数回调的经验的时候,去看这些内容还是有一点吃力的.由于Node.js独特的异步特性,才出现了"回调地狱"的问题,这篇文章中,我比较详细的记录了如何解决异步流问 ...

  2. apache+php+mysql运行环境

    建议Apache2.4+php5.6+mysql5.5+phpmyadmin4.4.4 参考: http://jingyan.baidu.com/article/fcb5aff797ec41edaa4 ...

  3. 使用VS2013 + EF6 + .NET4.5 连接Mysql数据库

    1.安装插件 在使用Visual Studio 2013添加ADO.NET实体数据模型新建连接时,默认是没有Mysql选项的.此时我们需要安装两个东西: 1.mysql-for-visualstudi ...

  4. 使用sklearn进行数据挖掘-房价预测(4)—数据预处理

    在使用机器算法之前,我们先把数据做下预处理,先把特征和标签拆分出来 housing = strat_train_set.drop("median_house_value",axis ...

  5. position,display,float,overflow,margin,padding之间的相互影响

    1.元素分为块级元素和行内元素, 块级元素可以设置宽高,会自动换行,并且会发生相邻margin的合并问题.行内元素设置宽和高无效,以水平方向排列,(行内元素,绝对定位,浮动元素不会发生外边距合并)并且 ...

  6. trait与policy模板技术

    trait与policy模板技术 我们知道,类有属性(即数据)和操作两个方面.同样模板也有自己的属性(特别是模板参数类型的一些具体特征,即trait)和算法策略(policy,即模板内部的操作逻辑). ...

  7. HDU 5791 Two(训练题002 F)

    Description Alice gets two sequences A and B. A easy problem comes. How many pair of sequence A' and ...

  8. Linux系列教程(十三)——Linux软件包管理之源码包、脚本安装包

    上篇博客我们讲解了网络yum源和光盘yum源的搭建步骤,然后详细介绍了相关的yum命令,yum 最重要是解决了软件包依赖性问题.在安装软件时,我们使用yum命令将会简单方便很多.我们知道yum命令只能 ...

  9. 2017上海QCon之旅总结(下)

    本来这个公众号的交流消息中间件相关的技术的.十月去上海参加了QCon,第一次参加这样的技术会议,感受挺多的,所以整理一下自己的一些想法接公众号和大家交流一下. 三天的内容还挺多的,之前已经有上篇和中篇 ...

  10. 基于.net的通用内存缓存模型组件

    谈到缓存,我们自然而然就会想到缓存的好处,比如: 降低高并发数据读取的系统压力:静态数据访问.动态数据访问 存储预处理数据,提升系统响应速度和TPS 降低高并发数据写入的系统压力 提升系统可用性,后台 ...