ThinkPHP3.1.3使用phpExcel1.8.0实现数据从Excel表格导入mysql数据库
来源:互联网 发布:思科交换机做端口镜像 编辑:程序博客网 时间:2024/05/17 09:13
首先,去PHPExcel官方网站下载PHPExcel,官方地址为;http://phpexcel.codeplex.com/.我下的是1.8.0版本的.解压后发现还是蛮大的,有十几M,不知道其他版本是不是会小点.
把解压好的PHPExcel文件放在ThinkPHP的Vender文件夹下(专门放第三方类库的),如下图
其次,创建Excel转换数组类,并把它放在ThinkPHP\Extend\Library\ORG\Util目录下
class ExcelToArrary { public function __construct() { Vendor("PHPExcel.Classes.PHPExcel");//引入phpexcel类(留意路径,不了解路径可以查看下手册) Vendor("PHPExcel.Classes.PHPExcel.IOFactory"); //引入phpexcel类(留意路径) } public function read($filename,$encode,$file_type){ if(strtolower ( $file_type )=='xls')//判断excel表类型为2003还是2007 { Vendor("PHPExcel.Classes.PHPExcel.Reader.Excel5"); //引入phpexcel类(留意路径) $objReader = PHPExcel_IOFactory::createReader('Excel5'); }elseif(strtolower ( $file_type )=='xlsx') { Vendor("PHPExcel.Classes.PHPExcel.Reader.Excel2007");//引入phpexcel类(留意路径) $objReader = PHPExcel_IOFactory::createReader('Excel2007'); } $objReader->setReadDataOnly(true); $objPHPExcel = $objReader->load($filename); $objWorksheet = $objPHPExcel->getActiveSheet(); $highestRow = $objWorksheet->getHighestRow(); $highestColumn = $objWorksheet->getHighestColumn(); $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); $excelData = array(); for ($row = 1; $row <= $highestRow; $row++) { for ($col = 0; $col < $highestColumnIndex; $col++) { $excelData[$row][] =(string)$objWorksheet->getCellByColumnAndRow($col, $row)->getValue(); } } return $excelData; } }
如右图
现在来说Excel,表格的结构样式和mysql样式要类似,表格样式如下(本人对Excel使用只是一般,所以如果有Excel大神做的报表,不知后果如何).
前端页面相关代码:
<div> <form method="post" action="{:U('Index/upload')}" enctype="multipart/form-data"> <font>导入Excel数据:</font> <label for="file_stu">上传</label> <input name="file_stu" type="file" id="file_stu" /> <h3>温馨提示:</h3> <p>请确认您的Excel表格类型是xls的,以免出现兼容问题.</p> <inputtypeinputtype="submit" class="sure" value="导入" /> </form> </div>
最后,控制器部分使用了Thinkphp自带的上传类,使用unlink()函数是为了删除上传的excel表格,以免文件夹存入过多文件,调试代码时可先注释掉.或者不写也行,把删除文件的工作交给你们的运维.代码中foreach循环部分$v[]里的0, 1,2可以改动以下看看与Excel表格里的内容是什么关系.可以把数组打印出来看一看,你就很清楚了
相关代码:
public function upload(){ import('ORG.Util.ExcelToArrary');//导入excelToArray类 if (! empty ( $_FILES ['file_stu'] ['name'] )){ import('ORG.Net.UploadFile'); $upload = new UploadFile();// 实例化上传类 $upload->maxSize = 3145728 ;// 设置附件上传大小 $upload->allowExts = array('xls', 'xlsx');// 设置附件上传类型 $upload->savePath = './Uploads/';// 设置附件上传目录 if(!$upload->upload()) {// 上传错误提示错误信息 $this->error($upload->getErrorMsg()); }else{// 上传成功 获取上传文件信息 $info = $upload->getUploadFileInfo(); } }else{ $this->error('(⊙o⊙)~没传数据就导入?!你在逗我?!'); } //dump($info);die; $ExcelToArrary=new ExcelToArrary();//实例化 $res=$ExcelToArrary->read($info[0]['savepath'].$info[0]['savename'],"UTF-8",$info[0]['extension']);//传参,判断office2007还是office2003 $res = array_slice($res,1); //为了去掉Excel里的表头,也就是$res数组里的$res[0]; //dump($res); foreach ( $res as $k => $v ){ //循环excel表 $data[$k]['mobile'] = $v [0];//创建二维数组 $data[$k]['name'] = $v [1]; $data[$k]['duty'] = $v [2]; } //dump($data);die; $result=M('appkey')->addAll($data); if(!$result){ $this->error('导入数据库失败'); exit(); }else{ $filename = './Uploads/'.$info[0]['savename'];//上传文件绝对路径,unlink()删除文件函数 if (unlink($filename)) { $this->success ( '导入成功' ); }else{ $this->error('缓存删除失败'); } } }
0 0
- ThinkPHP3.1.3使用phpExcel1.8.0实现数据从Excel表格导入mysql数据库
- ThinkPHP3.2+PHPExcel1.8版类库 实现导入导出excel表
- thinkphp3.2+phpexcel1.8.0导出表格
- Excel表格数据导入mysql数据库中
- Excel表格数据导入mysql数据库中
- excel表格数据导入到mysql数据库
- 表格,excel数据导入mysql数据库
- Excel表格数据导入mysql数据库中
- excel表格数据导入数据库
- MySQL导入EXCEL表格数据
- MySQL--导入Excel表格数据
- 如何实现数据从EXCEL表格导入到SQL Server
- php把excel表格中的数据导入到mysql数据库
- 基于SSM完成EXCEL表格数据导入到MySQL数据库
- 如何将excel表格数据使用图形化工具workbench导入mysql数据库中
- (超级详细版)利用ThinkPHP3.2.3+PHPExcel实现将表格数据导入到数据库
- phpExcel 实现excel表格和mysql数据库的导入导出
- 使用java技术将Excel表格内容导入mysql数据库
- org.apache.jasper.el.ELContextImpl cannot be cast to org.apache.jasper.el.ELContextImpl
- js之 prototype 理解补充
- 基于json-lib.jar包 创建JSONObject的四个常用方法
- 归并排序程序
- UVA10194getline()的用法注意
- ThinkPHP3.1.3使用phpExcel1.8.0实现数据从Excel表格导入mysql数据库
- ubuntu 14.04 安装chrome及给chromium 安装 flash player
- Perf -- Linux下的系统性能调优工具,第1部分
- HDU 5318 (dp+矩阵快速幂优化)
- Leetcode #241 Different Ways to Add Parentheses
- 限制某个进程只能在某个CPU上运行
- poj2395(最小生成树最大边)
- android 从log来判断耳机的状态
- 实习总结