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实现的遍历文件夹下所有文件,编辑删除
Jan 05 PHP
PHP在获取指定目录下的目录,在获取的目录下面再创建文件,多平台
Aug 03 PHP
php实现httpclient类示例
Apr 08 PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
Apr 17 PHP
php中mkdir函数用法实例分析
Nov 15 PHP
php字符串按照单词进行反转的方法
Mar 14 PHP
php实现每天自动变换随机问候语的方法
May 12 PHP
PHP创建/删除/复制文件夹、文件
May 03 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
Sep 30 PHP
Windows平台实现PHP连接SQL Server2008的方法
Jul 26 PHP
Yii2框架数据验证操作实例详解
May 02 PHP
php 函数中静态变量使用的问题实例分析
Mar 05 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
PHP5与MySQL数据库操作常用代码 收集
2010/03/21 PHP
PHP 数组遍历方法大全(foreach,list,each)
2010/06/30 PHP
PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
2011/07/01 PHP
PHP面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
php中base_convert()进制数字转换函数实例
2014/11/20 PHP
php自定义截取中文字符串-utf8版
2017/02/27 PHP
PHP PDOStatement::fetchObject讲解
2019/02/01 PHP
js 替换功能函数,用正则表达式解决,js的全部替换
2010/12/08 Javascript
浅谈JavaScript前端开发的MVC结构与MVVM结构
2016/06/03 Javascript
AngularJS基础 ng-if 指令用法
2016/08/01 Javascript
JS监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法
2016/08/05 Javascript
详解vue.js的事件处理器v-on:click
2017/06/27 Javascript
jQuery.extend 与 jQuery.fn.extend的用法及区别实例分析
2018/07/25 jQuery
layui 数据表格 点击分页按钮 监听事件的实例
2019/09/02 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
2019/12/17 Javascript
vue商城中商品“筛选器”功能的实现代码
2020/07/01 Javascript
前端如何实现动画过渡效果
2021/02/05 Javascript
python实现带验证码网站的自动登陆实现代码
2015/01/12 Python
Python实现爬取需要登录的网站完整示例
2017/08/19 Python
Python在不同目录下导入模块的实现方法
2017/10/27 Python
Python matplotlib 画图窗口显示到gui或者控制台的实例
2018/05/24 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
2019/01/29 Python
Python函数中参数是传递值还是引用详解
2019/07/02 Python
python实现简单银行管理系统
2019/10/25 Python
Notino瑞典:购买香水和美容产品
2019/07/26 全球购物
英国运动服、设备及配件网站:DW Sports
2019/12/04 全球购物
库存图片、照片、矢量图、视频和音乐:Shutterstock
2021/02/12 全球购物
会计助理的岗位职责
2013/11/29 职场文书
《天游峰的扫路人》教学反思
2014/04/25 职场文书
公司总经理任命书
2014/06/05 职场文书
辞职信如何写
2015/02/27 职场文书
催款函怎么写
2015/06/24 职场文书
MySQL创建索引需要了解的
2021/04/08 MySQL
pycharm 如何查看某一函数源码的快捷键
2021/05/12 Python
零基础学java之带返回值的方法的定义和调用
2022/04/10 Java/Android
Java数据结构之堆(优先队列)
2022/05/20 Java/Android