原文地址 http://www.thinkphp.cn/topic/14005.html

总结的注意事项

1实例化第三方类,要在类名前加\ ,不然引用地址不对.

实现步骤:
一:在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. $objPHPExcel = new PHPExcel();
  12. $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');
  13. $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格
  14. // $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.'  Export time:'.date('Y-m-d H:i:s'));
  15. for($i=0;$i<$cellNum;$i++){
  16. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]);
  17. }
  18. // Miscellaneous glyphs, UTF-8
  19. for($i=0;$i<$dataNum;$i++){
  20. for($j=0;$j<$cellNum;$j++){
  21. $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3), $expTableData[$i][$expCellName[$j][0]]);
  22. }
  23. }
  24. header('pragma:public');
  25. header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');
  26. header("Content-Disposition:attachment;filename=$fileName.xls");//attachment新窗口打印inline本窗口打印
  27. $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  28. $objWriter->save('php://output');
  29. exit;
  30. }
  31. /**
  32. *
  33. * 导出Excel
  34. */
  35. function expUser(){//导出Excel
  36. $xlsName  = "User";
  37. $xlsCell  = array(
  38. array('id','账号序列'),
  39. array('truename','名字'),
  40. array('sex','性别'),
  41. array('res_id','院系'),
  42. array('sp_id','专业'),
  43. array('class','班级'),
  44. array('year','毕业时间'),
  45. array('city','所在地'),
  46. array('company','单位'),
  47. array('zhicheng','职称'),
  48. array('zhiwu','职务'),
  49. array('jibie','级别'),
  50. array('tel','电话'),
  51. array('qq','qq'),
  52. array('email','邮箱'),
  53. array('honor','荣誉'),
  54. array('remark','备注')
  55. );
  56. $xlsModel = M('Member');
  57. $xlsData  = $xlsModel->Field('id,truename,sex,res_id,sp_id,class,year,city,company,zhicheng,zhiwu,jibie,tel,qq,email,honor,remark')->select();
  58. foreach ($xlsData as $k => $v)
  59. {
  60. $xlsData[$k]['sex']=$v['sex']==1?'男':'女';
  61. }
  62. $this->exportExcel($xlsName,$xlsCell,$xlsData);
  63. }
复制代码

第三:导入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. vendor("PHPExcel.PHPExcel");
  16. $file_name=$info[0]['savepath'].$info[0]['savename'];
  17. $objReader = PHPExcel_IOFactory::createReader('Excel5');
  18. $objPHPExcel = $objReader->load($file_name,$encode='utf-8');
  19. $sheet = $objPHPExcel->getSheet(0);
  20. $highestRow = $sheet->getHighestRow(); // 取得总行数
  21. $highestColumn = $sheet->getHighestColumn(); // 取得总列数
  22. for($i=3;$i<=$highestRow;$i++)
  23. {
  24. $data['account']= $data['truename'] = $objPHPExcel->getActiveSheet()->getCell("B".$i)->getValue();
  25. $sex = $objPHPExcel->getActiveSheet()->getCell("C".$i)->getValue();
  26. // $data['res_id']    = $objPHPExcel->getActiveSheet()->getCell("D".$i)->getValue();
  27. $data['class'] = $objPHPExcel->getActiveSheet()->getCell("E".$i)->getValue();
  28. $data['year'] = $objPHPExcel->getActiveSheet()->getCell("F".$i)->getValue();
  29. $data['city']= $objPHPExcel->getActiveSheet()->getCell("G".$i)->getValue();
  30. $data['company']= $objPHPExcel->getActiveSheet()->getCell("H".$i)->getValue();
  31. $data['zhicheng']= $objPHPExcel->getActiveSheet()->getCell("I".$i)->getValue();
  32. $data['zhiwu']= $objPHPExcel->getActiveSheet()->getCell("J".$i)->getValue();
  33. $data['jibie']= $objPHPExcel->getActiveSheet()->getCell("K".$i)->getValue();
  34. $data['honor']= $objPHPExcel->getActiveSheet()->getCell("L".$i)->getValue();
  35. $data['tel']= $objPHPExcel->getActiveSheet()->getCell("M".$i)->getValue();
  36. $data['qq']= $objPHPExcel->getActiveSheet()->getCell("N".$i)->getValue();
  37. $data['email']= $objPHPExcel->getActiveSheet()->getCell("O".$i)->getValue();
  38. $data['remark']= $objPHPExcel->getActiveSheet()->getCell("P".$i)->getValue();
  39. $data['sex']=$sex=='男'?1:0;
  40. $data['res_id'] =1;
  41. $data['last_login_time']=0;
  42. $data['create_time']=$data['last_login_ip']=$_SERVER['REMOTE_ADDR'];
  43. $data['login_count']=0;
  44. $data['join']=0;
  45. $data['avatar']='';
  46. $data['password']=md5('123456');
  47. M('Member')->add($data);
  48. }
  49. $this->success('导入成功!');
  50. }else
  51. {
  52. $this->error("请选择上传的文件");
  53. }
  54. }
复制代码

四、模板代码

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

thinkPHP的Excel插件的更多相关文章

  1. php 和thinkphp 对excel操作

    php对excel的操作主要通过引入 excel_reader2.php 或者是PHPExcel 类进行   两个文件自行下载 php 对其读操作: 文件目录结构 excel_reader2.php ...

  2. 免费高端出辕营,横空出世惊鬼神 Excel插件:ExcelPower_Helper 0.41初出茅庐

    免费高端出辕营,横空出世惊鬼神 Excel插件:ExcelPower_Helper 0.41初出茅庐        隐鹤 倾心开发 2019.4.1 1.   引言 经过前后大约零零散散的一年的开发, ...

  3. 【小o地图Excel插件版】计算两点间驾车路径,获取途径道路、驾车距离、耗时等信息

    小o地图Excel插件版:一款基于Excel软件开发的地图软件,提供基于Excel表格进行地理数据挖掘.地理数据分析.地图绘制.地图图表等功能的工具类软件.具有易用.高效.稳定的特点,能够满足地理数据 ...

  4. 【小o地图Excel插件版】不止能做图表,还能抓58、大众点评网页数据...

    小o地图Excel插件版:一款基于Excel软件开发的地图软件,提供基于Excel表格进行地理数据挖掘.地理数据分析.地图绘制.地图图表等功能的工具类软件.具有易用.高效.稳定的特点,能够满足地理数据 ...

  5. 适用于iview的表格转Excel插件

    在网上找的一个表格转excel插件,经过修改后使其适用于iview中的table组件 let idTmr; const getExplorer = () => { let explorer = ...

  6. 导出Excel插件——Export-CSV ---20150610

    出处:http://bbs.hcharts.cn/thread-99-1-1.html   导出Excel插件——Export-CSV 一.插件信息 插件名:Export-CSV(导出Execl文件) ...

  7. 个人用户永久免费,可自动升级版Excel插件,使用VSTO开发,Excel催化剂安装过程详解及安装失败解决方法

    因Excel催化剂用了VSTO的开发技术,并且为了最好的用户体验,用了Clickonce的布署方式(无需人工干预自动更新,让用户使用如浏览器访问网站一般,永远是最新的内容和功能).对安装过程有一定的难 ...

  8. django入门8之xadmin引入富文本和excel插件

    django入门8之xadmin引入富文本和excel插件 Xadmin引入富文本 插件的文档 https://xadmin.readthedocs.io/en/docs-chinese/make_p ...

  9. 修复ThinkPHP导出excel数字过大时显示为科学记数法

    修复ThinkPHP导出excel数字过大时显示为科学记数法,这种显示对于查看的用户来说是及其不友好的.所以,我们要使其转化为正常的数字串! 我在google 的过程中,查了一些资料.其中 1).// ...

随机推荐

  1. Tensorflow高效读取数据的方法

    最新上传的mcnn中有完整的数据读写示例,可以参考. 关于Tensorflow读取数据,官网给出了三种方法: 供给数据(Feeding): 在TensorFlow程序运行的每一步, 让Python代码 ...

  2. HDU 3342 -- Legal or Not【裸拓扑排序 &amp;&amp;水题 &amp;&amp; 邻接表实现】

    Legal or Not Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tot ...

  3. http格式(graph)

    http请求格式 http请求头 字段 http响应 http响应头字段

  4. Android开发之——编码规范

    1. 前言 这份文档参考了 Google Java 编程风格规范和 Google 官方 Android 编码风格规范.该文档仅供参考,只要形成一个统一的风格,见量知其意就可. 2. 源文件基础 2.1 ...

  5. hdoj 2795 Billboard 【线段树 单点更新 + 维护区间最大值】

    Billboard Time Limit: 20000/8000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  6. 结束QQ即时通信垄断,开辟即时通信互联互通instantnet时代

    结束QQ即时通信垄断,开辟即时通信互联互通instantnet时代 蓬勃发展的即时通信产业 即时通信(IM)是指可以即时发送和接收互联网消息等的业务. 即时通信.就是瞬间把信息发送给对方,假设不是即时 ...

  7. Cocos2d-x 3.0 红孩儿私家必修 - 第一章 初识Cocos2d-x 3.0project

    第一章    初识Cocos2d-x 3.0project Cocos2d-x 3.0出来了,听说与之前版本号相比修改较大 做为一个游戏开发人员.我们应该欢迎Cocos2d-x持续的更新和强大,Coc ...

  8. 英语发音规则---F字母

    英语发音规则---F字母 一.总结 一句话总结: 1.F/FF发[f]音? fly [flaɪ] vi. 飞 fine [faɪn] adj. 好的 float [fləʊt] vt. 使漂浮 fra ...

  9. oracle init.ora常用配置详解

    参考网上整理了重要的配置文件 db_name = "51cto"   一个数据库标识符,应与CREATE DATABASE 语句中指定的名称相对应. instance_name = ...

  10. Noip前紧急抢救

    管他会不会,知道结论就好了 紧急抢救知识 斯特林数 第一类斯特林数 递推公式 \[ S[n][k]=(n-1)\times S[n-1][k]+S[n-1][k-1] \] 处理的问题是将n个数划分为 ...