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详细彻底学习Smarty
Mar 27 PHP
php 计划任务 检测用户连接状态
Mar 29 PHP
Apache下禁止php文件被直接访问的解决方案
Apr 25 PHP
新浪SAE云平台下使用codeigniter的数据库配置
Jun 12 PHP
codeigniter实现get分页的方法
Jul 10 PHP
wampserver改变默认网站目录的办法
Aug 05 PHP
PHP抽奖算法程序代码分享
Oct 08 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
Dec 02 PHP
网页的分页下标生成代码(PHP后端方法)
Feb 03 PHP
PHPCMS2008广告模板SQL注入漏洞修复
Oct 11 PHP
PHP回调函数概念与用法实例分析
Nov 03 PHP
php快速导入大量数据的实例方法
Sep 23 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
CodeIgniter框架常见用法工作总结
2017/03/16 PHP
javascript读取RSS数据
2007/01/20 Javascript
javascript之卸载鼠标事件的代码
2007/05/14 Javascript
基于jquery的15款幻灯片插件
2011/04/10 Javascript
兼容IE和Firefox的javascript获取iframe文档内容的函数
2011/08/15 Javascript
jQuery之按钮组件的深入解析
2013/06/19 Javascript
原生JS实现在线问卷调查投票特效
2017/01/03 Javascript
JavaScript数据结构之二叉树的计数算法示例
2017/04/13 Javascript
js实现延迟加载的几种方法
2017/04/24 Javascript
Jquery EasyUI $.Parser
2017/06/02 jQuery
JS实现带导航城市列表以及输入搜索功能
2018/01/04 Javascript
Vue完整项目构建(进阶篇)
2018/02/10 Javascript
微信小程序用户信息encryptedData详解
2018/08/24 Javascript
vue微信分享到朋友圈 vue微信发送给好友
2018/11/28 Javascript
详解Vue源码学习之双向绑定
2019/04/10 Javascript
angular8.5集成TinyMce5的使用和详细配置(推荐)
2020/11/16 Javascript
python3中dict(字典)的使用方法示例
2017/03/22 Python
Python3结合Dlib实现人脸识别和剪切
2018/01/24 Python
Python实现将通信达.day文件读取为DataFrame
2018/12/22 Python
python+selenium 定位到元素,无法点击的解决方法
2019/01/30 Python
python 求10个数的平均数实例
2019/12/16 Python
纯css3实现思维导图样式示例
2018/11/01 HTML / CSS
美国大尺码女装零售商:TORRID
2016/10/01 全球购物
粉红色的鲸鱼:Vineyard Vines
2018/02/17 全球购物
澳大利亚最大的百货公司:Myer
2018/12/21 全球购物
应届大学毕业生找工作的求职信范文
2013/11/29 职场文书
财务管理专业自荐信范文
2013/12/24 职场文书
校本教研工作制度
2014/01/22 职场文书
工作违纪检讨书
2014/02/17 职场文书
医学院毕业生自荐信范文
2014/03/06 职场文书
党的群众路线教育实践活动教师自我剖析材料
2014/10/09 职场文书
2014年审计工作总结
2014/11/17 职场文书
撤诉申请书法院范本
2015/05/18 职场文书
2019感恩宣传标语!
2019/07/05 职场文书
windows11怎么查看wifi密码? win11查看wifi密码的技巧
2021/11/21 数码科技
MySQL使用IF语句及用case语句对条件并结果进行判断 
2022/09/23 MySQL