详解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 相关文章推荐
THINKPHP2.0到3.0有哪些改进之处
Jan 04 PHP
PHP中使用substr()截取字符串出现中文乱码问题该怎么办
Oct 21 PHP
PHP实现批量检测网站是否能够正常打开的方法
Aug 23 PHP
PHPStrom 新建FTP项目以及在线操作教程
Oct 16 PHP
magento后台无法登录解决办法的两种方法
Dec 09 PHP
如何用PHP做到页面注册审核
Mar 02 PHP
PHP redis实现超迷你全文检索
Mar 04 PHP
php上传excel表格并获取数据
Apr 27 PHP
lnmp安装多版本PHP共存的方法详解
Aug 02 PHP
PHP中“=&gt;
Mar 01 PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 PHP
PHP重载基础知识回顾
Sep 10 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
详解WordPress开发中的get_post与get_posts函数使用
2016/01/04 PHP
Yii2基于Ajax自动获取表单数据的方法
2016/08/10 PHP
Laravel实现ApiToken认证请求
2019/10/14 PHP
Centos7.7 64位利用本地完整安装包安装lnmp/lamp套件教程
2021/03/09 Servers
javascript简易缓动插件(源码打包)
2012/02/16 Javascript
js函数调用常用方法详解
2012/12/03 Javascript
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
2013/04/02 Javascript
JS操作Cookies的小例子
2013/10/15 Javascript
基于javascript的JSON格式页面展示美化方法
2014/07/02 Javascript
javascript实现window.print()去除页眉页脚
2014/12/30 Javascript
JS实现双击屏幕滚动效果代码
2015/10/28 Javascript
jQuery文件上传控件 Uploadify 详解
2016/06/20 Javascript
Vue.js 2.0 和 React、Augular等其他前端框架大比拼
2016/10/08 Javascript
基于Phantomjs生成PDF的实现方法
2016/11/07 Javascript
详解js界面跳转与值传递
2016/11/22 Javascript
js绑定事件和解绑事件
2017/04/27 Javascript
详解webpack+gulp实现自动构建部署
2017/06/29 Javascript
jQueryUI Sortable 应用Demo(分享)
2017/09/07 jQuery
小程序分享模块超级详解(推荐)
2019/04/10 Javascript
小程序实现搜索界面 小程序实现推荐搜索列表效果
2019/05/18 Javascript
vue-cli3添加模式配置多环境变量的方法
2019/06/05 Javascript
Python简单进程锁代码实例
2015/04/27 Python
Python判断某个用户对某个文件的权限
2016/10/13 Python
Python基础教程之异常详解
2019/01/10 Python
详解python实现小波变换的一个简单例子
2019/07/18 Python
Python3的高阶函数map,reduce,filter的示例详解
2019/07/23 Python
python3.6使用SMTP协议发送邮件
2020/05/20 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
2021/03/03 Python
店面销售职位的职责
2014/03/09 职场文书
真诚的求职信
2014/07/04 职场文书
2014年医院个人工作总结
2014/12/09 职场文书
2014年小学美术工作总结
2014/12/20 职场文书
敬老院义诊活动总结
2015/05/07 职场文书
2015年街道除四害工作总结
2015/05/15 职场文书
Vue中foreach数组与js中遍历数组的写法说明
2021/06/05 Vue.js
Tomcat starup.bat 脚本实现开机自启动
2022/04/20 Servers