[原版] thinkphp实现excel数据的导入导出

[复制链接]

[原版] thinkphp实现excel数据的导入导出[复制链接]

crx349 发表于 2016-3-28 18:10:38 [显示全部楼层] |阅读模式 回复:  0 浏览:  6686
实现步骤:
一:在http://phpexcel.codeplex.com/下载最新PHPExcel放到Vendor下,注意位置:ThinkPHP\Extend\Vendor\PHPExcel\PHPExcel.php。
二:导出excel代码实现
  1. /**方法**/
  2. function  index(){
  3.         $this->display();
  4.     }
  5. public function exportExcel($expTitle,$expCellName,$expTableData){
  6.         $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称
  7.         $fileName = $_SESSION['account'].date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定
  8.         $cellNum = count($expCellName);
  9.         $dataNum = count($expTableData);
  10.         vendor("PHPExcel.PHPExcel");
  11.       
  12.         $objPHPExcel = new PHPExcel();
  13.         $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');
  14.         
  15.         $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格
  16.        // $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.'  Export time:'.date('Y-m-d H:i:s'));  
  17.         for($i=0;$i<$cellNum;$i++){
  18.             $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]);
  19.         }
  20.           // Miscellaneous glyphs, UTF-8   
  21.         for($i=0;$i<$dataNum;$i++){
  22.           for($j=0;$j<$cellNum;$j++){
  23.             $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3), $expTableData[$i][$expCellName[$j][0]]);
  24.           }            
  25.         }  
  26.         
  27.         header('pragma:public');
  28.         header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');
  29.         header("Content-Disposition:attachment;filename=$fileName.xls");//attachment新窗口打印inline本窗口打印
  30.         $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');  
  31.         $objWriter->save('php://output');
  32.         exit;   
  33.     }
  34. /**
  35.      *
  36.      * 导出Excel
  37.      */
  38.     function expUser(){//导出Excel
  39.         $xlsName  = "User";
  40.         $xlsCell  = array(
  41.         array('id','账号序列'),
  42.         array('truename','名字'),
  43.         array('sex','性别'),
  44.         array('res_id','院系'),
  45.         array('sp_id','专业'),
  46.         array('class','班级'),
  47.         array('year','毕业时间'),
  48.         array('city','所在地'),
  49.         array('company','单位'),
  50.         array('zhicheng','职称'),
  51.         array('zhiwu','职务'),
  52.         array('jibie','级别'),
  53.         array('tel','电话'),
  54.         array('qq','qq'),
  55.         array('email','邮箱'),
  56.         array('honor','荣誉'),
  57.         array('remark','备注')   
  58.         );
  59.         $xlsModel = M('Member');
  60.    
  61.         $xlsData  = $xlsModel->Field('id,truename,sex,res_id,sp_id,class,year,city,company,zhicheng,zhiwu,jibie,tel,qq,email,honor,remark')->select();
  62.         foreach ($xlsData as $k => $v)
  63.         {
  64.             $xlsData[$k]['sex']=$v['sex']==1?'男':'女';
  65.         }
  66.         $this->exportExcel($xlsName,$xlsCell,$xlsData);
  67.          
  68.     }
复制代码

第三:导入excel数据代码
  1. function impUser(){
  2.         if (!empty($_FILES)) {
  3.             import("@.ORG.UploadFile");
  4.             $config=array(
  5.                 'allowExts'=>array('xlsx','xls'),
  6.                 'savePath'=>'./Public/upload/',
  7.                 'saveRule'=>'time',
  8.             );
  9.             $upload = new UploadFile($config);
  10.             if (!$upload->upload()) {
  11.                 $this->error($upload->getErrorMsg());
  12.             } else {
  13.                 $info = $upload->getUploadFileInfo();
  14.                
  15.             }
  16.         
  17.             vendor("PHPExcel.PHPExcel");
  18.                 $file_name=$info[0]['savepath'].$info[0]['savename'];
  19.                 $objReader = PHPExcel_IOFactory::createReader('Excel5');
  20.                 $objPHPExcel = $objReader->load($file_name,$encode='utf-8');
  21.                 $sheet = $objPHPExcel->getSheet(0);
  22.                 $highestRow = $sheet->getHighestRow(); // 取得总行数
  23.                 $highestColumn = $sheet->getHighestColumn(); // 取得总列数
  24.                 for($i=3;$i<=$highestRow;$i++)
  25.                 {   
  26.                    $data['account']= $data['truename'] = $objPHPExcel->getActiveSheet()->getCell("B".$i)->getValue();  
  27.                     $sex = $objPHPExcel->getActiveSheet()->getCell("C".$i)->getValue();
  28.                    // $data['res_id']    = $objPHPExcel->getActiveSheet()->getCell("D".$i)->getValue();
  29.                     $data['class'] = $objPHPExcel->getActiveSheet()->getCell("E".$i)->getValue();
  30.                     $data['year'] = $objPHPExcel->getActiveSheet()->getCell("F".$i)->getValue();
  31.                     $data['city']= $objPHPExcel->getActiveSheet()->getCell("G".$i)->getValue();
  32.                     $data['company']= $objPHPExcel->getActiveSheet()->getCell("H".$i)->getValue();
  33.                     $data['zhicheng']= $objPHPExcel->getActiveSheet()->getCell("I".$i)->getValue();
  34.                     $data['zhiwu']= $objPHPExcel->getActiveSheet()->getCell("J".$i)->getValue();
  35.                     $data['jibie']= $objPHPExcel->getActiveSheet()->getCell("K".$i)->getValue();
  36.                     $data['honor']= $objPHPExcel->getActiveSheet()->getCell("L".$i)->getValue();
  37.                     $data['tel']= $objPHPExcel->getActiveSheet()->getCell("M".$i)->getValue();
  38.                     $data['qq']= $objPHPExcel->getActiveSheet()->getCell("N".$i)->getValue();
  39.                     $data['email']= $objPHPExcel->getActiveSheet()->getCell("O".$i)->getValue();
  40.                     $data['remark']= $objPHPExcel->getActiveSheet()->getCell("P".$i)->getValue();
  41.                     $data['sex']=$sex=='男'?1:0;
  42.                     $data['res_id'] =1;
  43.                     
  44.                     $data['last_login_time']=0;
  45.                     $data['create_time']=$data['last_login_ip']=$_SERVER['REMOTE_ADDR'];
  46.                     $data['login_count']=0;
  47.                     $data['join']=0;
  48.                     $data['avatar']='';
  49.                     $data['password']=md5('123456');              
  50.                     M('Member')->add($data);
  51.          
  52.                 }
  53.                  $this->success('导入成功!');
  54.         }else
  55.             {
  56.                 $this->error("请选择上传的文件");
  57.             }   
  58.          

  59.     }
复制代码

四、模板代码
  1. <html>
  2.     <head>
  3.         
  4.     </head>
  5.     <body>
  6.     <P><a href="{:U('Index/expUser')}" >导出数据并生成excel</a></P><br/>
  7.         <form action="{:U('Index/impUser')}" method="post" enctype="multipart/form-data">
  8.             <input type="file" name="import"/>
  9.             <input type="hidden" name="table" value="tablename"/>
  10.             <input type="submit" value="导入"/>
  11.         </form>
  12.     </body>
  13.    
  14. </html>
复制代码

excel.zip (1.12 MB, 下载次数: 0)

转载请说明出处,本文地址:https://www.xcadmin.com/thread-1787-1-1.html
无限星辰工作室 Discuz全集下载  星辰站长网  集热爱361  一品文学  手机小游戏合集   海外空间网 阿里云服务器 腾讯云服务器
服务Discuz!建站|DiscuzQ配置|二开|小程序|APP|搬家|挂马清理|防护|Win/Linux环境搭建|优化|运维|
服务理念:专业 诚信 友好QQ842062626 服务项目 Q群315524225
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

管理员

306

主题

448

帖子

1885

积分

管理员

Rank: 9Rank: 9Rank: 9

站长币
1437
主机金
0
威望
0
贡献值
0
阅读权限
200
积分
1885

最新帖子

  • 爱好编辑 爱好编辑 5月8日

    KX-6000G 在3D Mark11中显示核显型号为ZX C1080,P分为1046,对比之前的C960大约250-2

    帖子: 兆芯KX-6000G 发布 3倍GPU性能提升

  • 爱星辰 爱星辰 5月8日

    在index首页增加客服代码及一键拨打电话 1.index.wxss或者app.wxss文件里增加样式

    帖子: 微信小程序增加悬浮在线客服

  • 星辰网编 星辰网编 5月8日

    据外媒报导,本周一(10月5日)在印度产生一同悲惨剧,35只猕猴打群架撞塌民房,导致

    帖子: 印度35只猴子打群架撞塌民房

  • 拖动客服框
    Online Service
    点击这里给我发消息
    点击这里联系我们
    微信扫一扫
    在线客服

    Archiver|手机版|小黑屋|星辰资讯网

    © 2015-2020 Comsenz Inc.  Powered by Discuz! X3.4

    1
    QQ