ThinkPHP基于PHPExcel导入Excel文件的方法


Posted in PHP onOctober 15, 2014

本文实例讲述了ThinkPHP基于PHPExcel导入Excel文件的方法。分享给大家供大家参考。具体方法如下:

主要知识点,用PHPExcel导入Excel数据经过这几天测试还是可以,xls,xlsx都可以获取Excel的数据。
下载地址:http://phpexcel.codeplex.com/

开发思路:

1.先把Excel文件上传到服务器

2.获取服务器Excel文件内容

3.写入数据库

一、上传Excel文件,使用PHP里自带的上传方法 “\Think\Upload();”,可以很方便的实现。为此我整理下使用这个方法的最简单方式

/**

 * TODO 上传文件方法

 * @param $fileid form表单file的name值

 * @param $dir 上传到uploads目录的$dir文件夹里

 * @param int $maxsize 最大上传限制,默认1024000 byte

 * @param array $exts 允许上传文件类型 默认array('gif','jpg','jpeg','bmp','png')

 * @return array 返回array,失败status=0 成功status=1,filepath=newspost/2014-9-9/a.jpg

 */

function uploadfile($fileid,$dir,$maxsize=5242880,$exts=array('gif','jpg','jpeg','bmp','png'),$maxwidth=430){

    $upload = new \Think\Upload();// 实例化上传类

    $upload->maxSize   =     $maxsize;// 设置附件上传大小,单位字节(微信图片限制1M

    $upload->exts      =     $exts;// 设置附件上传类型

    $upload->rootPath  =     './uploads/'; // 设置附件上传根目录

    $upload->savePath  =     $dir.'/'; // 设置附件上传(子)目录

    // 上传文件

    $info   =   $upload->upload();
    if(!$info) {// 上传错误提示错误信息

        return array(status=>0,msg=>$upload->getError());

    }else{// 上传成功

        return array(status=>1,msg=>'上传成功',filepath=>$info[$fileid]['savepath'].$info[$fileid]['savename']);

    }

}

这里默认上传到ThinkPHP入口文件index.php所在的文件夹uploads,此方法返回一个数据,状态status=1时为成功,也建议大家在写功能模块时或做封装时,整个系统的在架构初期应该有约定,在必要的情况下返回值用数组形式,成功返回

return array(status=>1,data=>....,info=>.....)

失败时可以返回
array(status->0,info=>'可以说明出错的原因',....)

这样用统一的方式有利于规范开发,团队协作时看代码时可以提高效率,减少思维运转,说远了,上传的方法调用方式如下:
//excel 文件

if(!empty($_FILES['xls']['name'])){

    $upload=uploadfile('xls','tempxls',5242880,array('xls','xlsx'));

    if($upload['status']){

 $path=$upload['filepath'];

    }else{

 $this->error($upload['msg']);

    }

}

二、获取Excel数据

1.首先需要引入PHPExcel的类库

require_once 'module/PHPExcel/Classes/PHPExcel/IOFactory.php';

2.获取Excel第0张表即(Sheet1)

//获取excel文件

$objPHPExcel = \PHPExcel_IOFactory::load("uploads/$path");

$objPHPExcel->setActiveSheetIndex(0);

$sheet0=$objPHPExcel->getSheet(0);

3.获取行数,并把数据读取出来$data数组

$rowCount=$sheet0->getHighestRow();//excel行数

$data=array();

for ($i = 2; $i <= $rowCount; $i++){

    $item['name']=$this->getExcelValue($sheet0,'A'.$i);

    $item['sex']=$this->getExcelValue($sheet0,'B'.$i);

    $item['contact']=$this->getExcelValue($sheet0,'C'.$i);

    $item['remark']=$this->getExcelValue($sheet0,'D'.$i);

    $item['addtime']=$this->getExcelValue($sheet0,'E'.$i);
    $data[]=$item;

}

三、最后保存到数据库

$success=0;

$error=0;

$sum=count($data);

foreach($data as $k=>$v){

    if(M('temp_area3')->data($v)->add()){

 $success++;

    }else {

 $error++;

    }

}
echo "总{$sum}条,成功{$success}条,失败{$error}条。";

至此大功告成!希望本文所述对大家的ThinkPHP框架程序设计有所帮助。

PHP 相关文章推荐
PHP制作图型计数器的例子
Oct 09 PHP
PHP与MySQL开发中页面乱码的产生与解决
Mar 27 PHP
php 编写安全的代码时容易犯的错误小结
May 20 PHP
php 操作调试的方法
Jul 12 PHP
php加水印的代码(支持半透明透明打水印,支持png透明背景)
Jan 17 PHP
php常用数学函数汇总
Nov 21 PHP
检测codeigniter脚本消耗内存情况的方法
Mar 21 PHP
PHP中使用Memache作为进程锁的操作类分享
Mar 30 PHP
PHP获取数组最大值下标的方法
May 12 PHP
利用PHP如何实现Socket服务器
Sep 23 PHP
php PDO异常处理详解
Nov 20 PHP
JS操作XML中DTD介绍及使用方法分析
Jul 04 PHP
ThinkPHP分页实例
Oct 15 #PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
Oct 15 #PHP
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
Oct 15 #PHP
PHP实现文件下载断点续传详解
Oct 15 #PHP
PHP多进程编程实例
Oct 15 #PHP
PHP实现采集中国天气网未来7天天气
Oct 15 #PHP
跟我学Laravel之视图 &amp; Response
Oct 15 #PHP
You might like
PHP Google的translate API代码
2008/12/10 PHP
让PHP以ROOT权限执行系统命令的方法
2011/02/10 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
PHP date()格式MySQL中插入datetime方法
2019/01/29 PHP
php7性能提升的原因详解
2019/10/13 PHP
jquery 防止表单重复提交代码
2010/01/21 Javascript
基于jquery的兼容各种浏览器的iframe自适应高度的脚本
2010/08/13 Javascript
优化javascript的执行效率一些方法总结
2013/12/25 Javascript
JS判断浏览器是否支持某一个CSS3属性的方法
2014/10/17 Javascript
jQuery实现在列表的首行添加数据
2015/05/19 Javascript
解析JavaScript面向对象概念中的Object类型与作用域
2016/05/10 Javascript
老生常谈javascript的类型转换
2016/10/12 Javascript
AngularJS使用ng-class动态增减class样式的方法示例
2017/05/18 Javascript
说说AngularJS中的$parse和$eval的用法
2017/09/14 Javascript
JavaScript碎片—函数闭包(模拟面向对象)
2019/03/13 Javascript
从理论角度讨论JavaScript闭包
2019/04/03 Javascript
JS实现求字符串中出现最多次数的字符和次数示例
2019/07/05 Javascript
Python 条件判断的缩写方法
2008/09/06 Python
Python函数嵌套实例
2014/09/23 Python
Python动态生成多维数组的方法示例
2018/08/09 Python
pygame实现贪吃蛇游戏(上)
2019/10/29 Python
Tensorflow的常用矩阵生成方式
2020/01/04 Python
python中matplotlib实现随鼠标滑动自动标注代码
2020/04/23 Python
python爬虫使用scrapy注意事项
2020/11/23 Python
ProBikeKit英国:在线公路自行车之家
2017/02/10 全球购物
Antonioli美国在线商店:时尚前卫奢华
2019/07/29 全球购物
世界上最大的乐谱选择:Sheet Music Plus
2020/01/18 全球购物
shell变量的作用空间是什么
2013/08/17 面试题
汽车维修专业个人求职信范文
2014/01/01 职场文书
高校教师岗位职责
2014/03/18 职场文书
党支部书记四风问题整改措施
2014/09/24 职场文书
党的群众路线教育实践活动个人对照检查材料(教师)
2014/11/04 职场文书
区域经理岗位职责
2015/02/02 职场文书
python如何正确使用yield
2021/05/21 Python
python机器学习实现oneR算法(以鸢尾data为例)
2022/03/03 Python
Nginx静态压缩和代码压缩提高访问速度详解
2022/05/30 Servers