Thinkphp使用phpexcel导入文件并写入数据库
现实中,我们往往很多地方都需要这样批量导入数据,除了phpexcel还有csv等方法可以解决
下面详细介绍一下使用方法
首先在官方下载安装包解压到本地,然后复制保存到tp框架下的vendor目录下

html页面如下

下面是后端代码:
public function column(){
$grade=D('school')->where(array('parent_id'=>1))->select();
$school = D('schooll')->select();
$this->assign('school',$school);
$this->assign('grade',$grade);
if(IS_POST){
$data_p = I('post.');
if ($data_P['sno']==' ') {
$this->ajaxReturn(array('nr' => '学号已存在!', 'sf' => 0));
}elseif($data_P['sname']==' '){
$this->ajaxReturn(array('nr' => '姓名不为空!', 'sf' => 0));
}elseif($data_P['grade']==' '){
$this->ajaxReturn(array('nr'=> '不为空','sf'=>'0'));
}elseif($data_P['major']==' '){
$this->ajaxReturn(array('nr'=>'不为空','sf'=>'0'));
}elseif($data_P['classs']==' '){
$this->ajaxReturn(array('nr'=>'不为空','sf'=>'0'));
}elseif($data_P['school']==' '){
$this->ajaxReturn(array('nr'=>'不为空','sf'=>'0'));
}else{
$student = M('student')->add(array('sno'=>$data_p['sno'],'passwd'=>md5($data_p['passwd']),'sname'=>$data_p['sname'],'zt'=>$data_p['checkresult'],'majorname'=>$data_p['major'],'classname'=>$data_p['classs'],'gradename'=>$data_p['school'],'schoolname'=>$data_p['grade']));
}
if ($student) {
$this->ajaxReturn(array('nr' => '添加成功'.$data_P['major'], 'sf' => 0));
} else {
$this->ajaxReturn(array('nr' => '添加失敗!', 'sf' => 0));
}
}
$this->display('index/column');
}
public function upload() {
if (!empty($_FILES)) {
$config = array(
'exts' => array('xlsx','xls'),
'maxSize' => 3145728,
'rootPath' =>"./Excel/",
'subName' => array('date','Ymd'),
);
$upload = new \Think\Upload($config);
if (!$info = $upload->upload()){
$this->error($upload->getError());
}else{
//vendor('PHPExcel.PHPExcel');/////引入类库
//vendor('PHPExcel.Reader.Excel5');
import("vendor.PHPExcel");
import("vendor.PHPExcel.Reader.Excel5");
$objPHPExcel = new \PHPExcel();/////初始化引入的方法
$PHPReader=new \PHPExcel_Reader_Excel5();
$file_name=$upload->rootPath.$info['excel']['savepath'].$info['excel']['savename'];
}
$objReader = $PHPReader->load($file_name);
$extension = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
//判断导入表格后缀格式
if ($extension == 'xlsx') {
$objReader =\PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel =$objReader->load($file_name, $encode = 'utf-8');
} elseif($extension == 'xls'){
$objReader =\PHPExcel_IOFactory::createReader('Excel5');
$objPHPExcel =$objReader->load($file_name, $encode = 'utf-8');
}
$sheet =$objPHPExcel->getSheet(0);//获取表中第一个工作表
$highestRow = $sheet->getHighestRow();//取得总行数
$highestColumn =$sheet->getHighestColumn(); //取得总列数
for($currentRow=1;$currentRow<=$highestRow;$currentRow++){
for($currentColumn='A';$currentColumn<=$highestColumn;$currentColumn++){
$address=$currentColumn.$currentRow;
$arr[$currentRow][$currentColumn]=$sheet->getCell($address)->getValue();
}
for ($i = 2; $i <= $highestRow; $i++) {
$data_p['sno'] =$objPHPExcel->getActiveSheet()->getCell("A" . $i)->getValue();
$passwd =$objPHPExcel->getActiveSheet()->getCell("B" .$i)->getValue();
$data_p['passwd']=md5($passwd);
$data_p['sname'] =$objPHPExcel->getActiveSheet()->getCell("C" .$i)->getValue();
$data_p['zt'] = '0';
$data_p['majorname'] = $objPHPExcel->getActiveSheet()->getCell("D". $i)->getValue();
$data_p['classname'] =$objPHPExcel->getActiveSheet()->getCell("E" .$i)->getValue();
$data_p['gradename'] =$objPHPExcel->getActiveSheet()->getCell("F" . $i)->getValue();
$data_p['schoolname'] =$objPHPExcel->getActiveSheet()->getCell("G" . $i)->getValue();
$ex=M('Student')->add($data_p);
}
if($ex){
$this->success('导入成功!');
}else{
$this->error("请选择上传的文件");
}
}
}





好的具体的就是这些。哪里不懂可以留言1119702968@qq.com咨询。
Thinkphp使用phpexcel导入文件并写入数据库的更多相关文章
- Thinkphp 用PHPExcel 导入Excel
搞了个简单的Excel导入, 用的是PHPExcel(百科:用来操作Office Excel文档的一个PHP类库, 基于微软的OpenXML标准和PHP语言) 好, 不说了, 开始吧... 首先得有P ...
- (OAF)jdeveloper集成log4j并将日志输出到指定文件并写入数据库
参考: How to configure Log4j in JDev 11g Ever wanted to use log4j in your adf project ? Well though Or ...
- nio实现文件读取写入数据库或文件
1.nio实现读取大文件,之后分批读取写入数据库 2.nio实现读取大文件,之后分批写入指定文件 package com.ally; import java.io.File; import java. ...
- PHPExcel使用-使用PHPExcel导入文件
导入步骤: 1. 实例化excel读取对象 2. 加载excel文件 ----------------> ( 1>. 全部加载. 2>. 选择加载. ) 3. 读取excel文件 - ...
- Oracle数据泵远程导入文件到本地数据库
--以dba身份登录 C:\Users\Administrator>sqlplus / as sysdba --创建用户 SQL> create user bfzg0828 identif ...
- 使用phpExcel导入Excel进入Mysql数据库
1.http://phpexcel.codeplex.com/下载phpExcel 2. <? require_once 'PHPExcel.php'; require_once 'PHPExc ...
- ThinkPhp 使用PhpExcel导出导入多语言文件
在ThinkPHP 里已经实现了多语言功能,只要在指定的目录下创建对应的语言文件并填充内容,即可实现多语言功能 而多语言的翻译却是一个很麻烦的事情,因为客户特定的行业问题导致我们翻译可能是不准确的 于 ...
- 十万级百万级数据量的Excel文件导入并写入数据库
一.需求分析 最近接到一个需求,导入十万级,甚至可能百万数据量的记录了车辆黑名单的Excel文件,借此机会分析下编码过程; 首先将这个需求拆解,发现有三个比较复杂的问题: 问题一:Excel文件导入后 ...
- ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
这篇文章主要介绍了ThinkPHP使用PHPExcel实现Excel数据导入导出,非常实用的功能,需要的朋友可以参考下 本文所述实例是使用在Thinkphp的开发框架上,要是使用在其他框架也是同样的方 ...
随机推荐
- SimpleDateFormat时间格式化存在线程安全问题
想必大家对SimpleDateFormat并不陌生.SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调 ...
- 【ASP.NET MVC 学习笔记】- 11 Controller和Action(2)
本文参考:http://www.cnblogs.com/willick/p/3331513.html 1.MVC一个请求的发出至action返回结果的流程图如下: 重点是Controller Fact ...
- ASP.NET MVC 分页问题
在使用Ajax.Pager进行分页的时候需要注意一下几个方面: 1.一定要引入jquery.unobtrusive-ajax.min.js这个js: 2.一定要在页面中使用注册分页器,注册方法:@{H ...
- 【20171027中】alert(1) to win 第13,14,15,16题
第13题 题目: function escape(s) { var tag = document.createElement('iframe'); // For this one, you get t ...
- 开发《WORD阅读器》小结(1)
这是一个相对原生的APP开发, 从GITHUB上下载了相应的框架,应该是至少2年以前的一个lovereader,是我能快速找到的为数不多的WORD阅读器的源码.应该是用ECLIPSE开发的,而我现在只 ...
- appium测试代码nullpoint
今天写了个简单向上滑动,执行到向上滑动操作,报nullpoint异常,经过各种乱碰终于解决了,现记录一下过程,以备以后参考! 环境背景:java+testng+appium 在@Test下调用 dir ...
- 《HelloGitHub》第 19 期
前言 最近很少写博客了,工作上的事情太多(在做一些数据分析方面的工作,之前是 Web 开发),时间捉襟见肘.更多的时间都花在工作上,没有精力.时间积累整理知识.说来还是能力太差.效率有问题. 后面会好 ...
- 白皮书之C++学习第一天
大三荒废了一年的时间在lol上,上头了吧.后悔也来不及了,总之我会拼命追回来的! 今天重拾起这本白皮书,也是很感慨啊! 废话不多说,好好学,好好找工作吧!大三结束了啊! 每个C++程序都有一个main ...
- [Bayesian] “我是bayesian我怕谁”系列 - Continuous Latent Variables
打开prml and mlapp发现这部分目录编排有点小不同,但神奇的是章节序号竟然都为“十二”. prml:pca --> ppca --> fa mlapp:fa --> pca ...
- Visual paradigm软件介绍
Visual paradigm软件介绍 说起Visual Paradigm你可能并不陌生,因为此前有一款功能强大的UML软件叫Visual Paradigm for UML,在这款软件在v11.1的时 ...