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
Oct 09 PHP
php 获取select下拉列表框的值
May 08 PHP
8个PHP程序员常用的功能汇总
Dec 18 PHP
PHP的Yii框架的基本使用示例
Aug 21 PHP
php实现CSV文件导入和导出
Oct 24 PHP
PHP使用mkdir创建多级目录的方法
Dec 22 PHP
php使用ffmpeg获取视频信息并截图的实现方法
May 03 PHP
在PHP语言中使用JSON和将json还原成数组的方法
Jul 19 PHP
Yii2主题(Theme)用法详解
Jul 23 PHP
PHP基于openssl实现的非对称加密操作示例
Jan 11 PHP
laravel 实现根据字段不同值做不同查询
Oct 23 PHP
php实现统计IP数及在线人数的示例代码
Jul 22 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
慎用preg_replace危险的/e修饰符(一句话后门常用)
2013/06/19 PHP
ThinkPHP框架实现session跨域问题的解决方法
2014/07/01 PHP
PHP中余数、取余的妙用
2015/06/29 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
2017/09/15 PHP
php获取微信基础接口凭证Access_token
2018/08/23 PHP
JavaScript 事件系统
2010/07/22 Javascript
javascript 动态创建表格
2015/01/08 Javascript
JS实现HTML标签转义及反转义
2020/04/14 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
2017/01/20 Javascript
带你快速理解javascript中的事件模型
2017/08/14 Javascript
input 标签实现输入框带提示文字效果(两种方法)
2017/10/09 Javascript
配置eslint规范项目代码风格
2019/03/11 Javascript
JavaScript内置对象之Array的使用小结
2020/05/12 Javascript
[51:53]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第二场 11.01
2020/11/02 DOTA
python命令行参数解析OptionParser类用法实例
2014/10/09 Python
在Python中操作列表之List.pop()方法的使用
2015/05/21 Python
详解用python自制微信机器人,定时发送天气预报
2019/03/25 Python
详解Python 切片语法
2019/06/10 Python
使用python的pandas为你的股票绘制趋势图
2019/06/26 Python
详解Python中的正斜杠与反斜杠
2019/08/09 Python
Python3 ffmpeg视频转换工具使用方法解析
2020/08/10 Python
css3一个简易的 LED 数字时钟实现方法
2020/01/15 HTML / CSS
思想品德自我鉴定
2013/10/12 职场文书
质检的岗位职责
2013/11/17 职场文书
质检员岗位职责
2013/12/17 职场文书
体育专业自荐书
2014/05/29 职场文书
电子商务专业求职信
2014/07/10 职场文书
2014年祖国生日寄语
2014/09/19 职场文书
师德师风事迹材料
2014/12/20 职场文书
财务总监岗位职责范本
2015/04/03 职场文书
党支部创先争优公开承诺书
2015/04/30 职场文书
埃及王子观后感
2015/06/16 职场文书
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书
python迷宫问题深度优先遍历实例
2021/06/20 Python
Python实现Excel文件的合并(以新冠疫情数据为例)
2022/03/20 Python
美国运营商 T-Mobile 以 117.83Mb/s 的速度排第一位
2022/04/21 数码科技