Excel 一键上传到数据库
<a class="edit" id="batchImport"> 批量导入 </a>
js代码弹窗:
$("#batchImport").click(function(){
//弹窗弹窗下列内容
var html='<form id="execlForm" method="post" enctype="multipart/form-data">';
html+='<input type="file" name="file" id="execlFile" accept="application/vnd.ms-excel"/>';
html+='</form>';
layer.confirm(html, {
btn: ['导入','取消'] ,//按钮
title:'导入测试者'
}, function(){
var file = $("#execlFile").val();
console.info(file);
var strFileName=file.replace(/^.+?\\([^\\]+?)(\.[^\.\\]*?)?$/gi,"$1"); //正则表达式获取文件名,不带后缀
var fileName=file.replace(/.+\./,"");
if(fileName==''){
layer.msg('请选择上传文件!', {time:1000});
return false;
}
$.ajax({
url: '<%=path %>/front/conner/uploadExecl.do?',
type: 'POST',
cache: false,
data: new FormData($('#execlForm')[0]),
processData: false,
contentType: false
}).done(function(res) {
console.info(res);
if(res=="true"){
layer.msg('上传成功', {time:1000});
setTimeout(function(){
table.ajax.reload().draw();
},1500);
}else{
layer.msg('上传失败'+res+'条数据', {time:1000});
setTimeout(function(){
table.ajax.reload().draw();
},1500);
}
}).fail(function(res) {
//console.info(res);
});
});
});
controllor控制代码
/**
* 批量导入测试者信息
* @param request
* @param response
* @param bankName
*/
@RequestMapping("uploadExecl")
public void uploadBillFile(HttpServletRequest request, HttpServletResponse response){
// TODO 设置 咨询师编号 获取session里
Map map = sessionContext.get("frontUserInfo");
String counselorId = (String) map.get("ID");//获取咨询师的id
//list集合接收读取excel文件
List<MultipartFile> list = connerService.getMultipartFile(request);
if(list.size()==0){
out.out(response, "false");//表示未上传文件
}else{
String filename = list.get(0).getOriginalFilename();
//判断读取到的文件是否是excel格式
boolean flag = filename.endsWith(".xls");
if(flag){
try {
//判断正确则调用读取excel文件的函数
out.out(response, connerService.uploadBillFile(list.get(0),counselorId));
} catch (Exception e) {
e.printStackTrace();
out.out(response, "false");
}
}else{
out.out(response, "false");//上传的文件不是excel文件
}
}
}
//Service代码
/**
* 获取上传批量导入测试者信息
* @param request
* @return
*/
public List<MultipartFile> getMultipartFile(HttpServletRequest request) {
List<MultipartFile> list = new ArrayList<MultipartFile>();
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(
request.getSession().getServletContext());
// 判断 request 是否有文件上传,即多部分请求
if (multipartResolver.isMultipart(request)) {
// 转换成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
// 取得request中的所有文件名
Iterator<String> iter = multiRequest.getFileNames();
while (iter.hasNext()) {
// 取得上传文件
MultipartFile file = multiRequest.getFile(iter.next());
list.add(file);
}
}
return list;
}
/**
* 读取excel文件的操作
* @param billFile
* @return
* @throws Exception
*/
public String uploadBillFile(MultipartFile billFile,String counselorId) throws Exception {
//创建集合
List<List> tolList = new ArrayList<List>();
InputStream is = billFile.getInputStream();
//读取excel文件的工作区域
jxl.Workbook workbook = jxl.Workbook.getWorkbook(is);
//设置只获取excel文件的第一个工作区
Sheet sheet = workbook.getSheet(0);
//获取行
int rows = sheet.getRows();
//获取列
int columns = sheet.getColumns();
//外循环获取行
for(int i = 1; i < rows; i++){
List eveList = new ArrayList<String>();
//定义布尔变量做标记
boolean flag=true;
//内循环列
for(int j = 0 ; j < 14 ;j++){
//cell是jxl里的类,在这里获取行和列
Cell cell = sheet.getCell(j, i);
String content = cell.getContents();
//StringUtils.isBlank判断某字符串是否为空或长度为0或由空白符
if(StringUtils.isBlank(content)){
flag=false;
//为假跳出
break;
}
//为真添加到集合
eveList.add(content);
}
//判断为true添加到集合
if(flag){
tolList.add(eveList);
}
}
//读取excel文件,如果有错误返回一个异常信息
List errorList = userInfoDao.saveBatchConner(tolList,counselorId) ;
String result = "true";
if(errorList.size() == 0){
}else{
result = ""+errorList.size();
}
return result;
}
Dao层代码
/**
* 咨询师操作批量保存测试者,上传excel操作
* 说明:函数主要读取excel文件,保存实体
* @param tolList
* @return
*/
public List saveBatchConner(List<List> toList,String counselorId) {
//学号,姓名,性别,出生日期,民族,血型,qq,邮箱,独生子女,单亲,所在地区,职业,学历,备注,咨询师验证。
List<UserInfo> errorList=new ArrayList<UserInfo>();
//提取execl列数据到属性集合,循环excel的内容
for(int i=0,len=toList.size();i<len;i++){
//获取excel tolList.get(获取一行).get(一行中的第一列).toString()
UserInfo userInfo = new UserInfo();
userInfo.setId(Uuid.getUuid());//获取不重复编号
userInfo.setCounselorId(counselorId);
userInfo.setIsConner("1");//1表示是测试者
userInfo.setAccount(toList.get(i).get(0).toString());//获取第一行第一列
userInfo.setUserName(toList.get(i).get(1).toString());//循环第一行第二列
userInfo.setSex(toList.get(i).get(2).toString());
userInfo.setBirthday(toList.get(i).get(3).toString());
userInfo.setNation(toList.get(i).get(4).toString());
userInfo.setBloodGroup(toList.get(i).get(5).toString());
userInfo.setQq(toList.get(i).get(6).toString());
userInfo.setEmail(toList.get(i).get(7).toString());
userInfo.setIsTheOnlyChild(toList.get(i).get(8).toString());//独生
userInfo.setIsSingleParent(toList.get(i).get(9).toString());//单亲
userInfo.setArea(toList.get(i).get(10).toString());//地区
userInfo.setProfession(toList.get(i).get(11).toString());//职业
userInfo.setEnducationlBackground(toList.get(i).get(12).toString());//学历
userInfo.setRemark(toList.get(i).get(13).toString());//备注
//保存到实体类
String flag=saveEntity(userInfo);
//如果有错误信息则返回一个集合
if(!"true".equals(flag)){
errorList.add(userInfo);
}
}
return errorList;
}
Excel 一键上传到数据库的更多相关文章
- 一个简单的excel文件上传到数据库方法
因为以前项目中有用到过Excel导入,所以整理了一下,这是一个导入Excel数据到数据库的方法 注意:需要导入poi jar包 代码清单 /** * Excel 导入 * @param mapping ...
- 使用ocupload和POI一键上传Excel并解析导入数据库
使用的工具如下: JQuery ocupload jquery.ocupload-1.1.2.js Apache POI poi-3.9.jar 如果是Maven项目添加依赖如下: <depe ...
- 文件一键上传、汉字转拼音、excel文件上传下载功能模块的实现
----------------------------------------------------------------------------------------------[版权申明: ...
- IT轮子系列(六)——Excel上传与解析,一套代码解决所有Excel业务上传,你Get到了吗
前言 在日常开发当中,excel的上传与解析是很常见的.根据业务不同,解析的数据模型也都不一样.不同的数据模型也就需要不同的校验逻辑,这往往需要写多套的代码进行字段的检验,如必填项,数据格式.为了避免 ...
- Python 一键上传下载&一键提交文件到SVN入基线工具
一键上传下载&一键提交文件到SVN入基线工具 by:授客 QQ:1033553122 实现功能 1 测试环境 1 使用说明 1 注: 根据我司项目规则订制的一套工具,集成以下功能,源码 ...
- HTML中简单实现文件的一键上传的操作
在html中实现文件上传的方式为form表单中使用input type="file"控件,但是这个控件往往显示不是美观,影响页面效果,这时候,一般就通过一键上传的操作,来实现点击一 ...
- jQuery OCUpload ——> 一键上传插件
OCUpload为jQuery的插件(One Click Upload),意思为一键上传,封装了对于文件上传的一些方法,只需几行代码,文件上传优雅而简洁. 对于传统的文件上传,只是通过inp ...
- [SAP ABAP开发技术总结]客户端文本文件、Excel文件上传下载
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- [SAP ABAP开发技术总结]文本文件、Excel文件上传下传
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
随机推荐
- CVE-2017-8464远程命令执行漏洞(震网漏洞)复现
前言 2017年6月13日,微软官方发布编号为CVE-2017-8464的漏洞公告,官方介绍Windows系统在解析快捷方式时存在远程执行任意代码的高危漏洞,黑客可以通过U盘.网络共享等途径触发漏洞, ...
- Linux下串口通信工具minicom的用法
一.查看串口设备 例如,将USB转串口线插入交换机Console口后,执行命令:$ll /dev/ttyUSB* 二.连接串口设备 $sudo minicom -D /dev/ttyUSB0 三.设置 ...
- 第二章完结,包含exam练习
正则方程(Normal Equation) 梯度下降是最小化代价函数\(J(\theta)\)的一种方式,这里提出了另一种方式即正则方式不使用迭代方式:\(\theta = (X^TX)^{-1}X^ ...
- 教你轻轻松松入门PHP
入门PHP不用愁,跟我来学一学. 1.我们想学习PHP,首先就要了解PHP,那PHP是什么呢? PHP("PHP: Hypertext Preprocessor",超文本预处理器的 ...
- 盒子模型,定位技术,负边距,html5 新增标签
盒子模型 /*[margin 外边距] margin属性最多四个 1.只写一个值,四个方向的margin均为这个值 2.写两个值:上,右两个方向,下默认=上,右 默认=左 3.写三个值:上.右.下三个 ...
- Hugo快速搭建Blog
以往我们搭建blog要么学习一个编程语言+Web开发框架,要么使用现成的blog系统(如WordPress).其实我们还可以使用Hugo.Hugo是由Go语言实现的静态网站生成器,它不需要数据库,所以 ...
- 我的学习之路_第二十五_javaScript
Javascript 作用:可以对表单数据进行校验,可以对页面实现一些动态效果 定义: JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型. 它的解释器被称为 ...
- Linux安装SVN服务器
“svn都快淘汰了” #安装subversion yum -y install subversion #创建svn仓库基础路径 mkdir /home/svn #创建svn仓库 svnadmin cr ...
- server
- OpenCV3.2 + VS2015环境配置
一.准备工作: (1) 到OpenCV的官网(http://opencv.org/)下载OpenCV3.2 (2) 安装好VS2015. (3) 计算机系统:Win7(Win8, Win1 ...