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 相关文章推荐
基于mysql的论坛(4)
Oct 09 PHP
第十一节--重载
Nov 16 PHP
php MySQL与分页效率
Jun 04 PHP
ThinkPHP关联模型操作实例分析
Sep 23 PHP
php网站被挂木马后的修复方法总结
Nov 06 PHP
Yii操作数据库实现动态获取表名的方法
Mar 29 PHP
php json_encode与json_decode详解及实例
Dec 13 PHP
PHP 获取指定地区的天气实例代码
Feb 08 PHP
详解Yaf框架PHPUnit集成测试方法
Dec 27 PHP
PHP实现用户登录的案例代码
May 10 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
Dec 30 PHP
PHP设计模式入门之状态模式原理与实现方法分析
Apr 26 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之Smarty入门
2007/01/04 PHP
分享PHP header函数使用教程
2013/09/05 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
2019/10/21 PHP
Javascript调用XML制作连动下拉列表框
2006/06/25 Javascript
将HTML自动转为JS代码
2006/06/26 Javascript
javascript数组去重3种方法的性能测试与比较
2013/03/26 Javascript
JavaScript编程的10个实用小技巧
2014/04/18 Javascript
使用AngularJS 应用访问 Android 手机的图片库
2015/03/24 Javascript
浅析Javascript ES6新增值比较函数Object.is
2016/08/24 Javascript
让html元素随浏览器的大小自适应垂直居中的实现方法
2016/10/12 Javascript
Express + Node.js实现登录拦截器的实例代码
2017/07/01 Javascript
Vue Element使用icon图标教程详解(第三方)
2018/02/07 Javascript
小程序实现留言板
2018/11/02 Javascript
vue组件tabbar使用方法详解
2018/11/06 Javascript
详解Vue源码之数据的代理访问
2018/12/11 Javascript
VUE实现强制渲染,强制更新
2019/10/29 Javascript
centos 下面安装python2.7 +pip +mysqld
2014/11/18 Python
Python Web框架Flask中使用新浪SAE云存储实例
2015/02/08 Python
Python类方法__init__和__del__构造、析构过程分析
2015/03/06 Python
Django中实现点击图片链接强制直接下载的方法
2015/05/14 Python
django 开发忘记密码通过邮箱找回功能示例
2018/04/17 Python
Python实现读取字符串按列分配后按行输出示例
2018/04/17 Python
Python读取excel中的图片完美解决方法
2018/07/27 Python
Python使用pickle模块储存对象操作示例
2018/08/15 Python
python实现跨excel sheet复制代码实例
2020/03/03 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
IFCHIC台湾:欧美国际设计师品牌
2019/05/18 全球购物
NICKIS.com荷兰:设计师儿童时装
2020/01/08 全球购物
业务员岗位职责范本
2013/12/15 职场文书
关于青春的演讲稿500字
2014/08/22 职场文书
我是一名护士演讲稿
2014/08/28 职场文书
2014年学校党建工作总结
2014/11/11 职场文书
用python基于appium模块开发一个自动收取能量的小助手
2021/09/25 Python
分享MySQL常用 内核 Debug 几种常见方法
2022/03/17 MySQL
《进击的巨人》新联动CM 兵长强势出击兽巨人
2022/04/05 日漫