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 相关文章推荐
动态网站web开发 PHP、ASP还是ASP.NET
Oct 09 PHP
php教程 插件机制在PHP中实现方案
Nov 02 PHP
php导出CSV抽象类实例
Sep 24 PHP
PHP四舍五入、取整、round函数使用示例
Feb 06 PHP
PHP判断是否连接上网络的方法
Jul 01 PHP
php错误日志简单配置方法
Jul 11 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
Dec 12 PHP
深入理解PHP的远程多会话调试
Sep 21 PHP
laravel ORM 只开启created_at的几种方法总结
Jan 29 PHP
php中青蛙跳台阶的问题解决方法
Oct 14 PHP
Yii2.0框架behaviors方法使用实例分析
Sep 30 PHP
Laravel关系模型指定条件查询方法
Oct 10 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类
2006/10/09 PHP
PHP计算百度地图两个GPS坐标之间距离的方法
2015/01/09 PHP
Zend Framework教程之Zend_Layout布局助手详解
2016/03/04 PHP
关于JavaScript中string 的replace
2013/04/12 Javascript
基于js disabled=&quot;false&quot;不起作用的解决办法
2013/06/26 Javascript
jQuery Ajax使用实例
2015/04/16 Javascript
javascript函数式编程实例分析
2015/04/25 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
2015/10/15 Javascript
JS控制文本域只读或可写属性的方法
2016/06/24 Javascript
探究JavaScript中的五种事件处理程序方式
2016/12/07 Javascript
详解Jquery的事件操作和文档操作
2016/12/19 Javascript
bootstrap基本配置_动力节点Java学院整理
2017/07/14 Javascript
canvas+gif.js打造自己的数字雨头像的示例代码
2017/10/26 Javascript
Koa2微信公众号开发之消息管理
2018/05/16 Javascript
微信小程序入门之绘制时钟
2020/10/22 Javascript
Javascript中window.name属性详解
2020/11/19 Javascript
Python数据结构与算法之图的基本实现及迭代器实例详解
2017/12/12 Python
PyQT实现多窗口切换
2018/04/20 Python
JSON文件及Python对JSON文件的读写操作
2018/10/07 Python
python-pyinstaller、打包后获取路径的实例
2019/06/10 Python
python pygame实现五子棋小游戏
2020/10/26 Python
python使用sessions模拟登录淘宝的方式
2019/08/16 Python
Python Django form 组件动态从数据库取choices数据实例
2020/05/19 Python
理解Django 中Call Stack机制的小Demo
2020/09/01 Python
HTML5 video 视频标签使用介绍
2014/02/03 HTML / CSS
中国医药集团国药在线:国药网
2017/02/06 全球购物
Hotels.com英国:全球领先的酒店住宿提供商
2019/01/24 全球购物
武汉高蓝德国际.net机试
2016/06/24 面试题
如何用Python输出一个Fibonacci数列
2016/08/28 面试题
财务经理岗位职责
2013/11/09 职场文书
个人函授自我鉴定
2014/03/25 职场文书
公共场所禁烟倡议书
2014/08/30 职场文书
一般纳税人申请报告
2015/05/18 职场文书
我的中国梦主题班会
2015/08/14 职场文书
该怎么书写道歉信?
2019/07/03 职场文书
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
2021/06/21 Java/Android