jQuery+php+ajax+PHPExcel实现上传excel文件导入数据库
<scripttype="text/javascript"src="/js/lib/jquery.ajax.form.js"></script>
<div class="btnimport">
<form class='myupload' action="<?=$this->Html->url(array('controller'=>'Goods','action'=>'batchImport'))?>" method='post' enctype='multipart/form-data' id="form_<?php echo $good['Good']['id']?>">
<input class="fileupload" type="file" name="importExcel" data-id="<?php echo $good['Good']['id']?>">
</form>
<span>批量导入</span>
</div>
<style type="text/css">
.btnimport{position: relative;overflow: hidden;margin-right: 4px;display:inline-block; *display:inline;padding:4px 10px 4px;font-size:14px;line-height:18px; *line-height:20px;color:#fff; text-align:center;vertical-align:middle;cursor:pointer;background:#5bb75b; border:1px solid #cccccc;background-color: #1fb5ad;; border-bottom-color:#b3b3b3;-webkit-border-radius:4px; border-color: #1fb5ad; -moz-border-radius:4px;border-radius:4px; padding: 5px 10px; font-size: 12px; line-height: 1.5; border-radius: 3px; }
.btnimport input{position: absolute;top: 0; right: 0;margin: 0;border:solid transparent; opacity: 0;filter:alpha(opacity=0); cursor: pointer;}
</style>

<script type="text/javascript">
$(function () {
$(".fileupload").change(function(){
var btnimport = $(".btnimport span");
var id = $(this).data('id');
$("#form_" + id).ajaxSubmit({
dataType: 'json',
data:{id:id},
success: function(data) {
switch(data['code']){
case 0:{
alert("批量导入成功");
//btnimport.html("批量导入"); //按钮还原
window.location.reload();
break;
}
case -6000:{
btnimport.html("上传失败");
alert("上传失败!");
break;
}
case -6001:{
btnimport.html("上传失败");
alert("文件格式不正确!");
break;
}
default:{
alert("系统繁忙,请稍后再试!");
break;
}
}
},
error:function(xhr){
btnimport.html("上传失败");
}
});
});
});
</script>
/**
* [batchImport 批量导入]
* @return [type] [description]
*/
public function batchImport(){
$id = $this->request->data('id');
$DOMAIN = $_SERVER['HTTP_HOST'];
$file = $_FILES;
$filename = $file['importExcel']['name'];
$file_temp_name =$file['importExcel']['tmp_name'];
$dir = WWW_ROOT.'/files' . DS . 'xls';
$type = strstr($filename,'.');
if($type != '.xls' && $type != '.xlsx'){
$this->_err_ret(-6001,'sys err');
}
if(is_uploaded_file($file_temp_name)){ $full_name = $dir.DS. date ( 'Y-m-d_h:i:s' ).'_'.$filename;
$result = move_uploaded_file($file_temp_name, $full_name);
//处理文件路径,便于访问
//$full_name = explode('webroot/', $full_name);
//$full_name = 'http://' . $DOMAIN .'/aaa/bbb'.$full_name[1];
}else{
$this->_err_ret(-6000,'err');
}
//如果上传文件成功,就执行导入 excel操作
$objReader = PHPExcel_IOFactory::createReaderForFile($full_name);
$objPHPExcel = $objReader->load($full_name);
$objPHPExcel->setActiveSheetIndex(0);
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow(); // 取得总行数
$test = $objPHPExcel->getActiveSheet()->getCell('A2')->getValue();
$data = array();
for ($i=2; $i <= $highestRow ; $i++) {
$sn = $objPHPExcel->getActiveSheet()->getCell('A'.$i)->getValue();
$pwd = $objPHPExcel->getActiveSheet()->getCell('B'.$i)->getValue();
$this->Card->create();
$data = array(
'sn' => $sn,
'pwd' => $pwd,
'good_id' => $id,
);
if(!$this->Card->save($data)){
$this->_err_ret(-6000,'err');
exit;
}
}
$newNumber = (int)$this->Good->findById($id)['Good']['number']+(int)$highestRow-1;
$this->Good->id = $id;
if(!$this->Good->saveField('number',$newNumber)){
$this->_err_ret(-6000,'err');
}
$this->_suc_ret($id);
}
jQuery+php+ajax+PHPExcel实现上传excel文件导入数据库的更多相关文章
- PHPExcel实现上传excel文件导入数据库
项目中需要批量导入数据,感觉这个需求以后也会经常用,必须总结分享下: 引入jquery的第三方表单插件: <scripttype="text/javascript&qu ...
- js上传Excel文件
一.问题 需要在项目里添加一个上传excel文件的功能,因为其他同样的后台里面有上传文件的功能,第一反应就是想着直接用.了解了一下发现它是利用bootstrap的fileinput实现的,但是我怎么都 ...
- java上传excel文件及解析
java上传excel文件及解析 CreateTime--2018年3月5日16:25:14 Author:Marydon 一.准备工作 1.1 文件上传插件:swfupload: 1.2 文件上 ...
- ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 try.dot.net 的正确使用姿势 .Net NPOI 根据excel模板导出excel、直接生成excel .Net NPOI 上传excel文件、提交后台获取excel里的数据
ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不 ...
- Django框架(上传Excel文件并读取)
博主今天整理下Django框架中上传Excel文件并读取 博主是要在管理平台中新增用例的维护功能,想着通过上传Excel文件来展示用例,下面是项目的路径图: 首先先建数据库模型 model.py 可以 ...
- 使用phpExcel批量上传excel表数据到mysql数据库中
/*批量上传数据*/ if(isset($_POST['submit']) && $_POST['submit']=='上传文件') { //导入类文件 require_once (& ...
- 上传excel数据到数据库中
上传excel表格数据到数据库 导入固定路径下的excel数据到数据库 <form id="disposeFlightDataForm" action="../up ...
- asp.net上传Excel文件到服务端进行读取
1.我们IIS是使用7.5,由于在网站中上传Excel文件到服务端进行数据读取时候出现读取失败情况.一开始以为是没有按照office软件问题,其实不然,因为server是64位操作系统,如果我们要使用 ...
- jmert中如何测试上传文件接口(测试上传excel文件)
第一次用jmeter这个工具测试上传接口,以前没做过这一块,导致走了很多弯路.特地把经验谢谢,怕自己以后忘记... 一,jmeter如何上传文件 jmeter 的 http requests post ...
随机推荐
- AIM Tech Round 3 (Div. 2) (B C D E) (codeforces 709B 709C 709D 709E)
rating又掉下去了.好不容易蓝了.... A..没读懂题,wa了好几次,明天问队友补上... B. Checkpoints 题意:一条直线上n个点x1,x2...xn,现在在位置a,求要经过任意n ...
- HDU1710Binary Tree Traversals
HDU1710Binary Tree Traversals 题目大意:给一个树的前序遍历和中序遍历,要求输出后序遍历. (半年前做这道题做了两天没看懂,今天学了二叉树,回来AC了^ ^) 首先介绍一下 ...
- 转载Code First Migrations更新数据库架构的具体步骤
[转载] Code First Migrations更新数据库结构的具体步骤 我对 CodeFirst 的理解,与之对应的有 ModelFirst与 DatabaseFirst ,三者各有千秋,依项 ...
- FreeModbus 精简版本(Only RTU) for M128 (Modbus Slave)
1.硬件连接: M128 PD3 INT3/TXD1 ---> PC 232COM Pin 2 PD2 INT2/RXD1 ---> PC 232COM Pin 3 GND ...
- Oracle- 备份单表结构和单表数据
在网上看到,有用,记录如下: 这是Oracle的备份表结构和数据,因为实际工作对表进行大规模的数据改动都要讲数据进行备份,否则丢了数据那是很头疼的事情. --创建一份表结构 create table ...
- ASP.NET MVC- EF基础
EF是在ADO.NET的基础上做进一步封装,以后如果做新的项目我可能会考虑不用ADO.NET,而用EF. 其实很久以前我就接触过EF,可是太久没用,有些忘记了,前几天重温,也做了一点笔记.记录如下: ...
- Struts—自定义一个简单的mystruct
传统mvc开发总结: 1. 跳转代码写死,不灵活 2. 每次都去写servlet,web.xml中配置servlet! (配置目的: 请求, Servlet处理类) 一个简单的struct案例,描述如 ...
- 函数中的$input
$input 在此属于一个特殊变量,一般在函数中用于接收输入 function FindWindowsFolder { $input | where-object {$_.Name -eq " ...
- Update操作浅析,一定是先Delete再Insert吗?
Update操作一定是先Delete再Insert吗? Update在数据库中的执行是怎么样的?“Update操作是先把数据删除,然后再插入数据”.在网上看了很多也都是这么认为的.但在查阅到一些不同看 ...
- delphi中使用webbrowser提交表单
转自:http://blog.163.com/hehaifeng1984@126/blog/static/6900113620133504644998/ 我们以百度搜索为例,使用webbrowser组 ...