控制器文件:

  1. class ExcelAction extends Action {
  2. public function __construct()
  3. {
  4. import('ORG.Util.ExcelToArrary');//导入excelToArray类
  5. }
  6.  
  7. public function index()
  8. {
  9. $this->display();
  10. }
  11. public function add()
  12. {
  13. $tmp_file = $_FILES ['file_stu'] ['tmp_name'];
  14. $file_types = explode ( ".", $_FILES ['file_stu'] ['name'] );
  15. $file_type = $file_types [count ( $file_types ) - ];
  16.  
  17. /*判别是不是.xls文件,判别是不是excel文件*/
  18. if (strtolower ( $file_type ) != "xlsx" && strtolower ( $file_type ) != "xls")
  19. {
  20. $this->error ( '不是Excel文件,重新上传' );
  21. }
  22.  
  23. /*设置上传路径*/
  24. $savePath = C('UPLOAD_DIR');
  25.  
  26. /*以时间来命名上传的文件*/
  27. $str = date ( 'Ymdhis' );
  28. $file_name = $str . "." . $file_type;
  29.  
  30. /*是否上传成功*/
  31. if (! copy ( $tmp_file, $savePath . $file_name ))
  32. {
  33. $this->error ( '上传失败' );
  34. }
  35. $ExcelToArrary=new ExcelToArrary();//实例化
  36. $res=$ExcelToArrary->read(C('UPLOAD_DIR').$file_name,"UTF-8",$file_type);//传参,判断office2007还是office2003
  37.  
  38. foreach ( $res as $k => $v ) //循环excel表
  39. {
  40. $k=$k-;//addAll方法要求数组必须有0索引
  41. $data[$k]['name1'] = $v [];//创建二维数组
  42. $data[$k]['name2'] = $v [];
  43. $data[$k]['name3'] = $v [];
  44. $data[$k]['name4'] = $v [];
  45. }
  46. $kucun=M('kucun');//M方法
  47. $result=$kucun->addAll($data);
  48. if(! $result)
  49. {
  50. $this->error('导入数据库失败');
  51. exit();
  52. }
  53. else
  54. {
  55. $this->success ( '导入成功' );
  56. }
  57. }

定义Excel转换数组类:

  1. class ExcelToArrary {
  2. public function __construct() {
  3. Vendor("Excel.PHPExcel");//引入phpexcel类(注意你自己的路径)
  4. Vendor("Excel.PHPExcel.IOFactory");
  5. }
  6. public function read($filename,$encode,$file_type){
  7. if(strtolower ( $file_type )=='xls')//判断excel表类型为2003还是2007
  8. {
  9. Vendor("Excel.PHPExcel.Reader.Excel5");
  10. $objReader = PHPExcel_IOFactory::createReader('Excel5');
  11. }elseif(strtolower ( $file_type )=='xlsx')
  12. {
  13. Vendor("Excel.PHPExcel.Reader.Excel2007");
  14. $objReader = PHPExcel_IOFactory::createReader('Excel2007');
  15. }
  16. $objReader->setReadDataOnly(true);
  17. $objPHPExcel = $objReader->load($filename);
  18. $objWorksheet = $objPHPExcel->getActiveSheet();
  19. $highestRow = $objWorksheet->getHighestRow();
  20. $highestColumn = $objWorksheet->getHighestColumn();
  21. $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
  22. $excelData = array();
  23. for ($row = 1; $row <= $highestRow; $row++) {
  24. for ($col = 0; $col < $highestColumnIndex; $col++) {
  25. $excelData[$row][] =(string)$objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
  26. }
  27. }
  28. return $excelData;
  29. }

前台导入页面:

  1. <form method="post" action="Excel/add" enctype="multipart/form-data">
  2. <h3>导入Excel表:</h3><input type="file" name="file_stu" />
  3.  
  4. <input type="submit" value="导入" />
  5. </form>

注意:在php.ini里面把;extension=php_zip.dll前面的分号去掉;

C('UPLOAD_DIR').$file_name是上传的excel的路径;

thinkphp 结合phpexcel实现excel导入的更多相关文章

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

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

  2. 利用phpexcel把excel导入数据库和数据库导出excel实现

    <?php ); ini_set(,,,date(,date(,,,date(,,,date(,date(,,,date()     ->setCellValue();); $objPHP ...

  3. thinkphp用phpexcel读取excel,并修改列中的值,再导出excel,带往excel里写入图片

    <?php class GetpriceAction extends AdministratorAction { // 文件保存路径 protected $savepath; // 允许上传的文 ...

  4. Thinkphp 用PHPExcel 导入Excel

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

  5. ThinkPHP 3.2.3 使用 PHPExcel 处理 Excel 表格

    下载 PHPExcel(https://github.com/PHPOffice/PHPExcel) 把下载的 zip 包解压至 ./ThinkPHP/Library/Vendor 下 一.导入 Ex ...

  6. ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据

    前端HTML+JQuery  备注Jquery需要1.x版本,不能用2.x版本 1.引入必要文件及上传input <load file="__PUBLIC__/js/jquery-1. ...

  7. 使用thinkphp框架实现Excel导入数据库

    之前讲过php实现Excel导出数据库的随笔,链接:https://www.cnblogs.com/nuanai/p/6727711.html 之前的项目用到较多的就是Excel导出,现在用到了Exc ...

  8. tp3.2.3运用phpexcel将excel文件导入mysql数据库

    1,下载PHPExcel 2,配置将下载好的PHPExcel文件与PHPExcel.php 放到thinkphp 根目录 include/Library/Org/Util/下面 3,同时将PHPExc ...

  9. 使用phpExcel实现Excel数据的导入导出(完全步骤)

    使用phpExcel实现Excel数据的导入导出(完全步骤)   很多文章都有提到关于使用phpExcel实现Excel数据的导入导出,大部分文章都差不多,或者就是转载的,都会出现一些问题,下面是本人 ...

随机推荐

  1. 怎么在const成员函数里面调用非const成员函数?

    举个例子: 定义了一个类的const实例,怎么让他也能调用非能调用非const成员函数class foo{public:void test1() {cout << "I am n ...

  2. 渲染路径-实时渲染中常用的几种Rendering Path

    http://www.cnblogs.com/polobymulberry/p/5126892.html?utm_source=tuicool&utm_medium=referral 回到顶部 ...

  3. Unity 2D骨骼动画2:创建真实动画

    http://bbs.9ria.com/thread-401781-1-1.html 在这个系列,我们将关注Unity引擎提供的基于骨骼动画工具.它的主要思想是为了把它应用到你自己的游戏来介绍和教基本 ...

  4. 51nod1483(打表)

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1483 题意:中文题诶- 思路: 在输入时预处理每个数据能达到的 ...

  5. Mol Cell Proteomics. |胡丹丹| 雷公藤红素通过SIRT1-FXR 信号通路保护胆汁淤积性肝损伤

    期刊:Mol Cell Proteomics 题目:Celastrol protects from cholestatic liver injury though modulation of SIRT ...

  6. iOS UITableView 解决估算行高和指定行高的矛盾

    喜欢交朋友的加:微信号 dwjluck2013 1.一般来说 在iOS 中若UITableViewCell 固定行高, 会通过 - (CGFloat)tableView:(UITableView *) ...

  7. 基于PHP的正则表达式

    用法 从某个字符抽取信息 用新文本替换匹配的文本 把字符串拆分成小块字符串组成的数组 基础 preg_match('/需要匹配的正则表达式/', '字符串'); 正则匹配模式 集合: [xxxx]-- ...

  8. Codeforces 1119D(贡献计算)

    题目传送 排序看一看. 关键点在于发现性质: 算一个点的贡献时: 1.与后一个有重叠.\[当 a[i] + r >= a[i + 1] + l, 即 r - l >= a[i + 1] - ...

  9. java 美团面试常见问题总

    一 基础篇 1. System.out.println(3|9)输出什么? 2. 说一下转发(Forward)和重定向(Redirect)的区别 3. 在浏览器中输入url地址到显示主页的过程,整个过 ...

  10. 《javascript设计模式》笔记之第四章:继承

    一:首先,一个简单的继承实例: 首先是创建一个父类Person: function Person(name) { this.name = name; } Person.prototype.getNam ...