thinkphp 结合phpexcel实现excel导入
控制器文件:

- class ExcelAction extends Action {
- public function __construct()
- {
- import('ORG.Util.ExcelToArrary');//导入excelToArray类
- }
- public function index()
- {
- $this->display();
- }
- public function add()
- {
- $tmp_file = $_FILES ['file_stu'] ['tmp_name'];
- $file_types = explode ( ".", $_FILES ['file_stu'] ['name'] );
- $file_type = $file_types [count ( $file_types ) - ];
- /*判别是不是.xls文件,判别是不是excel文件*/
- if (strtolower ( $file_type ) != "xlsx" && strtolower ( $file_type ) != "xls")
- {
- $this->error ( '不是Excel文件,重新上传' );
- }
- /*设置上传路径*/
- $savePath = C('UPLOAD_DIR');
- /*以时间来命名上传的文件*/
- $str = date ( 'Ymdhis' );
- $file_name = $str . "." . $file_type;
- /*是否上传成功*/
- if (! copy ( $tmp_file, $savePath . $file_name ))
- {
- $this->error ( '上传失败' );
- }
- $ExcelToArrary=new ExcelToArrary();//实例化
- $res=$ExcelToArrary->read(C('UPLOAD_DIR').$file_name,"UTF-8",$file_type);//传参,判断office2007还是office2003
- foreach ( $res as $k => $v ) //循环excel表
- {
- $k=$k-;//addAll方法要求数组必须有0索引
- $data[$k]['name1'] = $v [];//创建二维数组
- $data[$k]['name2'] = $v [];
- $data[$k]['name3'] = $v [];
- $data[$k]['name4'] = $v [];
- }
- $kucun=M('kucun');//M方法
- $result=$kucun->addAll($data);
- if(! $result)
- {
- $this->error('导入数据库失败');
- exit();
- }
- else
- {
- $this->success ( '导入成功' );
- }
- }

定义Excel转换数组类:

- class ExcelToArrary {
- public function __construct() {
- Vendor("Excel.PHPExcel");//引入phpexcel类(注意你自己的路径)
- Vendor("Excel.PHPExcel.IOFactory");
- }
- public function read($filename,$encode,$file_type){
- if(strtolower ( $file_type )=='xls')//判断excel表类型为2003还是2007
- {
- Vendor("Excel.PHPExcel.Reader.Excel5");
- $objReader = PHPExcel_IOFactory::createReader('Excel5');
- }elseif(strtolower ( $file_type )=='xlsx')
- {
- Vendor("Excel.PHPExcel.Reader.Excel2007");
- $objReader = PHPExcel_IOFactory::createReader('Excel2007');
- }
- $objReader->setReadDataOnly(true);
- $objPHPExcel = $objReader->load($filename);
- $objWorksheet = $objPHPExcel->getActiveSheet();
- $highestRow = $objWorksheet->getHighestRow();
- $highestColumn = $objWorksheet->getHighestColumn();
- $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
- $excelData = array();
- for ($row = 1; $row <= $highestRow; $row++) {
- for ($col = 0; $col < $highestColumnIndex; $col++) {
- $excelData[$row][] =(string)$objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
- }
- }
- return $excelData;
- }

前台导入页面:

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

注意:在php.ini里面把;extension=php_zip.dll前面的分号去掉;
C('UPLOAD_DIR').$file_name是上传的excel的路径;
thinkphp 结合phpexcel实现excel导入的更多相关文章
- ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
这篇文章主要介绍了ThinkPHP使用PHPExcel实现Excel数据导入导出,非常实用的功能,需要的朋友可以参考下 本文所述实例是使用在Thinkphp的开发框架上,要是使用在其他框架也是同样的方 ...
- 利用phpexcel把excel导入数据库和数据库导出excel实现
<?php ); ini_set(,,,date(,date(,,,date(,,,date(,date(,,,date() ->setCellValue();); $objPHP ...
- thinkphp用phpexcel读取excel,并修改列中的值,再导出excel,带往excel里写入图片
<?php class GetpriceAction extends AdministratorAction { // 文件保存路径 protected $savepath; // 允许上传的文 ...
- Thinkphp 用PHPExcel 导入Excel
搞了个简单的Excel导入, 用的是PHPExcel(百科:用来操作Office Excel文档的一个PHP类库, 基于微软的OpenXML标准和PHP语言) 好, 不说了, 开始吧... 首先得有P ...
- ThinkPHP 3.2.3 使用 PHPExcel 处理 Excel 表格
下载 PHPExcel(https://github.com/PHPOffice/PHPExcel) 把下载的 zip 包解压至 ./ThinkPHP/Library/Vendor 下 一.导入 Ex ...
- ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
前端HTML+JQuery 备注Jquery需要1.x版本,不能用2.x版本 1.引入必要文件及上传input <load file="__PUBLIC__/js/jquery-1. ...
- 使用thinkphp框架实现Excel导入数据库
之前讲过php实现Excel导出数据库的随笔,链接:https://www.cnblogs.com/nuanai/p/6727711.html 之前的项目用到较多的就是Excel导出,现在用到了Exc ...
- tp3.2.3运用phpexcel将excel文件导入mysql数据库
1,下载PHPExcel 2,配置将下载好的PHPExcel文件与PHPExcel.php 放到thinkphp 根目录 include/Library/Org/Util/下面 3,同时将PHPExc ...
- 使用phpExcel实现Excel数据的导入导出(完全步骤)
使用phpExcel实现Excel数据的导入导出(完全步骤) 很多文章都有提到关于使用phpExcel实现Excel数据的导入导出,大部分文章都差不多,或者就是转载的,都会出现一些问题,下面是本人 ...
随机推荐
- 怎么在const成员函数里面调用非const成员函数?
举个例子: 定义了一个类的const实例,怎么让他也能调用非能调用非const成员函数class foo{public:void test1() {cout << "I am n ...
- 渲染路径-实时渲染中常用的几种Rendering Path
http://www.cnblogs.com/polobymulberry/p/5126892.html?utm_source=tuicool&utm_medium=referral 回到顶部 ...
- Unity 2D骨骼动画2:创建真实动画
http://bbs.9ria.com/thread-401781-1-1.html 在这个系列,我们将关注Unity引擎提供的基于骨骼动画工具.它的主要思想是为了把它应用到你自己的游戏来介绍和教基本 ...
- 51nod1483(打表)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1483 题意:中文题诶- 思路: 在输入时预处理每个数据能达到的 ...
- Mol Cell Proteomics. |胡丹丹| 雷公藤红素通过SIRT1-FXR 信号通路保护胆汁淤积性肝损伤
期刊:Mol Cell Proteomics 题目:Celastrol protects from cholestatic liver injury though modulation of SIRT ...
- iOS UITableView 解决估算行高和指定行高的矛盾
喜欢交朋友的加:微信号 dwjluck2013 1.一般来说 在iOS 中若UITableViewCell 固定行高, 会通过 - (CGFloat)tableView:(UITableView *) ...
- 基于PHP的正则表达式
用法 从某个字符抽取信息 用新文本替换匹配的文本 把字符串拆分成小块字符串组成的数组 基础 preg_match('/需要匹配的正则表达式/', '字符串'); 正则匹配模式 集合: [xxxx]-- ...
- Codeforces 1119D(贡献计算)
题目传送 排序看一看. 关键点在于发现性质: 算一个点的贡献时: 1.与后一个有重叠.\[当 a[i] + r >= a[i + 1] + l, 即 r - l >= a[i + 1] - ...
- java 美团面试常见问题总
一 基础篇 1. System.out.println(3|9)输出什么? 2. 说一下转发(Forward)和重定向(Redirect)的区别 3. 在浏览器中输入url地址到显示主页的过程,整个过 ...
- 《javascript设计模式》笔记之第四章:继承
一:首先,一个简单的继承实例: 首先是创建一个父类Person: function Person(name) { this.name = name; } Person.prototype.getNam ...