详解thinkphp实现excel数据的导入导出(附完整案例)


Posted in PHP onDecember 29, 2016

实现步骤:

一:在http://phpexcel.codeplex.com/下载最新PHPExcel放到Vendor下,注意位置:ThinkPHP\Extend\Vendor\PHPExcel\PHPExcel.php。

二:导出excel代码实现

/**方法**/
function index(){
    $this->display();
  }
public function exportExcel($expTitle,$expCellName,$expTableData){
    $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称
    $fileName = $_SESSION['account'].date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定
    $cellNum = count($expCellName);
    $dataNum = count($expTableData);
    vendor("PHPExcel.PHPExcel");
    
    $objPHPExcel = new PHPExcel();
    $cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ');
    
    $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格
    // $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.' Export time:'.date('Y-m-d H:i:s')); 
    for($i=0;$i<$cellNum;$i++){
      $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]); 
    } 
     // Miscellaneous glyphs, UTF-8  
    for($i=0;$i<$dataNum;$i++){
     for($j=0;$j<$cellNum;$j++){
      $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3), $expTableData[$i][$expCellName[$j][0]]);
     }       
    } 
    
    header('pragma:public');
    header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');
    header("Content-Disposition:attachment;filename=$fileName.xls");//attachment新窗口打印inline本窗口打印
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 
    $objWriter->save('php://output'); 
    exit;  
  }
/**
   *
   * 导出Excel
   */
  function expUser(){//导出Excel
    $xlsName = "User";
    $xlsCell = array(
    array('id','账号序列'),
    array('truename','名字'),
    array('sex','性别'),
    array('res_id','院系'),
    array('sp_id','专业'),
    array('class','班级'),
    array('year','毕业时间'),
    array('city','所在地'),
    array('company','单位'),
    array('zhicheng','职称'),
    array('zhiwu','职务'),
    array('jibie','级别'),
    array('tel','电话'),
    array('qq','qq'),
    array('email','邮箱'),
    array('honor','荣誉'),
    array('remark','备注')  
    );
    $xlsModel = M('Member');
  
    $xlsData = $xlsModel->Field('id,truename,sex,res_id,sp_id,class,year,city,company,zhicheng,zhiwu,jibie,tel,qq,email,honor,remark')->select();
    foreach ($xlsData as $k => $v)
    {
      $xlsData[$k]['sex']=$v['sex']==1?'男':'女';
    }
    $this->exportExcel($xlsName,$xlsCell,$xlsData);
     
  }

第三:导入excel数据代码

function impUser(){
    if (!empty($_FILES)) {
      import("@.ORG.UploadFile");
      $config=array(
        'allowExts'=>array('xlsx','xls'),
        'savePath'=>'./Public/upload/',
        'saveRule'=>'time',
      );
      $upload = new UploadFile($config);
      if (!$upload->upload()) {
        $this->error($upload->getErrorMsg());
      } else {
        $info = $upload->getUploadFileInfo();
        
      }
    
      vendor("PHPExcel.PHPExcel");
        $file_name=$info[0]['savepath'].$info[0]['savename'];
        $objReader = PHPExcel_IOFactory::createReader('Excel5');
        $objPHPExcel = $objReader->load($file_name,$encode='utf-8');
        $sheet = $objPHPExcel->getSheet(0);
        $highestRow = $sheet->getHighestRow(); // 取得总行数
        $highestColumn = $sheet->getHighestColumn(); // 取得总列数
        for($i=3;$i<=$highestRow;$i++)
        {  
          $data['account']= $data['truename'] = $objPHPExcel->getActiveSheet()->getCell("B".$i)->getValue(); 
          $sex = $objPHPExcel->getActiveSheet()->getCell("C".$i)->getValue();
          // $data['res_id']  = $objPHPExcel->getActiveSheet()->getCell("D".$i)->getValue();
          $data['class'] = $objPHPExcel->getActiveSheet()->getCell("E".$i)->getValue();
          $data['year'] = $objPHPExcel->getActiveSheet()->getCell("F".$i)->getValue();
          $data['city']= $objPHPExcel->getActiveSheet()->getCell("G".$i)->getValue();
          $data['company']= $objPHPExcel->getActiveSheet()->getCell("H".$i)->getValue();
          $data['zhicheng']= $objPHPExcel->getActiveSheet()->getCell("I".$i)->getValue();
          $data['zhiwu']= $objPHPExcel->getActiveSheet()->getCell("J".$i)->getValue();
          $data['jibie']= $objPHPExcel->getActiveSheet()->getCell("K".$i)->getValue();
          $data['honor']= $objPHPExcel->getActiveSheet()->getCell("L".$i)->getValue();
          $data['tel']= $objPHPExcel->getActiveSheet()->getCell("M".$i)->getValue();
          $data['qq']= $objPHPExcel->getActiveSheet()->getCell("N".$i)->getValue();
          $data['email']= $objPHPExcel->getActiveSheet()->getCell("O".$i)->getValue();
          $data['remark']= $objPHPExcel->getActiveSheet()->getCell("P".$i)->getValue();
          $data['sex']=$sex=='男'?1:0;
          $data['res_id'] =1;
          
          $data['last_login_time']=0;
          $data['create_time']=$data['last_login_ip']=$_SERVER['REMOTE_ADDR'];
          $data['login_count']=0;
          $data['join']=0;
          $data['avatar']='';
          $data['password']=md5('123456');       
          M('Member')->add($data);
     
        } 
         $this->success('导入成功!');
    }else
      {
        $this->error("请选择上传的文件");
      }  
     

  }

四、模板代码

<html>
  <head>
    
  </head>
  <body>
  <P><a href="{:U('Index/expUser')}" >导出数据并生成excel</a></P><br/>
    <form action="{:U('Index/impUser')}" method="post" enctype="multipart/form-data">
      <input type="file" name="import"/>
      <input type="hidden" name="table" value="tablename"/>
      <input type="submit" value="导入"/>
    </form>
  </body>
  
</html>

最后下载:demo下载

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
第十五节--Zend引擎的发展
Nov 16 PHP
基于HTTP长连接的&quot;服务器推&quot;技术的php 简易聊天室
Oct 31 PHP
Fatal error: Call to undefined function curl_init()解决方法
Apr 09 PHP
Notice: Trying to get property of non-object problem(PHP)解决办法
Mar 11 PHP
php读取目录及子目录下所有文件名的方法
Oct 20 PHP
浅析php原型模式
Nov 25 PHP
Nginx下配置codeigniter框架方法
Apr 07 PHP
Zend Framework分页类用法详解
Mar 22 PHP
PHP如何使用Memcached
Apr 05 PHP
Yii实现文章列表置顶功能示例
Oct 18 PHP
Mac系统完美安装PHP7详细教程
Jun 06 PHP
PHP实现非阻塞模式的方法分析
Jul 26 PHP
PHP实现的XML操作类【XML Library】
Dec 29 #PHP
php常用字符函数实例小结
Dec 29 #PHP
php常用正则函数实例小结
Dec 29 #PHP
详解ThinkPHP3.2.3验证码显示、刷新、校验
Dec 29 #PHP
php常用数组函数实例小结
Dec 29 #PHP
php正则修正符用法实例详解
Dec 29 #PHP
PHP登录(ajax提交数据和后台校验)实例分享
Dec 29 #PHP
You might like
thinkphp3查询mssql数据库乱码解决方法分享
2014/02/11 PHP
Laravel 修改默认日志文件名称和位置的例子
2019/10/17 PHP
jquery中常用的SET和GET
2009/01/13 Javascript
jQuery 取值、赋值的基本方法整理
2014/03/31 Javascript
JavaScript实现节点的删除与序号重建实例
2015/08/05 Javascript
JavaScript中的闭包
2016/02/24 Javascript
jquery自动补齐功能插件flexselect用法示例
2016/08/06 Javascript
Angular的MVC和作用域
2016/12/26 Javascript
AngularJS+bootstrap实现动态选择商品功能示例
2017/05/17 Javascript
详解使用Visual Studio Code对Node.js进行断点调试
2017/09/14 Javascript
简单的vuex 的使用案例笔记
2018/04/13 Javascript
vue-cli3.0 特性解读
2018/04/22 Javascript
Vue.js 时间转换代码及时间戳转时间字符串
2018/10/16 Javascript
layui使用表格渲染获取行数据的例子
2019/09/13 Javascript
JavaScript实现简单计算器功能
2019/12/19 Javascript
JS实现分页导航效果
2020/02/19 Javascript
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
[01:33:30]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第二场 2月5日
2021/03/11 DOTA
简单谈谈python中的多进程
2016/11/06 Python
python并发编程之线程实例解析
2017/12/27 Python
python 实时得到cpu和内存的使用情况方法
2018/06/11 Python
运用Python的webbrowser实现定时打开特定网页
2019/02/21 Python
Python里字典的基本用法(包括嵌套字典)
2019/02/27 Python
使用python批量修改文件名的方法(视频合并时)
2020/03/24 Python
基于python实现ROC曲线绘制广场解析
2020/06/28 Python
ProBikeKit新西兰:自行车套件,跑步和铁人三项装备
2017/04/05 全球购物
SteelSeries赛睿官网:游戏外设和配件的领先制造商(耳机、键盘、鼠标和鼠标垫)
2018/06/17 全球购物
2013英文求职信模板范文
2013/11/15 职场文书
消防安全检查制度
2014/02/04 职场文书
学校实习推荐信
2015/03/27 职场文书
2015年酒店客房部工作总结
2015/04/25 职场文书
2015年党员公开承诺事项
2015/04/27 职场文书
公司2015年终工作总结
2015/05/26 职场文书
小学体育组工作总结2015
2015/07/21 职场文书
护理心得体会范文
2016/01/22 职场文书
Python实现照片卡通化
2021/12/06 Python