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;
}
转载于:https://www.cnblogs.com/zhuyuewei/p/6518114.html
Excel 一键上传到数据库相关推荐
- 使用ocupload和POI一键上传Excel并解析导入数据库
使用的工具如下: JQuery ocupload jquery.ocupload-1.1.2.js Apache POI poi-3.9.jar 如果是Maven项目添加依赖如下: <depe ...
- 使用jQuery OCUpload实现excel文件一键上传功能
使用jQuery OCUpload实现excel文件一键上传功能 js代码 //为导入按钮,添加一键上传效果 $("#button-import").upload({action: ...
- excel oss 上传_excel上传数据库失败
ThinkPHP5.0 使用phpexcel导入数据库 先把html代码贴出来(整个导入导出的): <form action="ADMIN_MAIN/Excel/into" ...
- word表格导出html代码,(网页源代码中的表格数据怎么导出excel)如何将把从WORD、EXCEL中复制的内容转换成HTML源代码,再通过网页表单提交上传到数据库?...
如何将ASP页面中的表格生成一个Excel表,求源码 '给你个例子吧.保存为 asp文件看看.具体就在第一句. New Page 1PJ计画 第版 案件No 案件名 主门 顾客 PJ责任者 営业担当 ...
- Excel数据上传并且导入数据库
Excel数据上传并导入数据库 Excel表中的数据示例样板 相关依赖(本博客编写环境springboot) <!--poi实现excel导入导出--><dependency> ...
- SSM项目的excel文件上传并添加到数据库
SSM项目的excel文件上传并添加到数据库(新手,不足之处请多多指教) 基于学校的课设,要用到excel文件的上传和数据库导入,在网上找了好多demo,最后找到一篇使用poi的,经过修改后,可以正常 ...
- POI批量导入及一键上传ocupload和pinyin4j组件的使用案例
主要讲解四点: 快递员批量作废功能(重点,本质上是快递员的批量修改操作) 一键上传.POI解析Excel.pinyin4j(会用) 代码重构:优化模型驱动和优化分页代码(理解) 定区添加.带条件分页查 ...
- php上传下载excel,PHPExcel 上传下载的示例代码
1:首先用composer require phpoffice/phpexcel 2: 引入相关的类: use PHPExcel; use PHPExcel_Cell; use PHPExcel_Wr ...
- Springboot+thymeleaf实现excel文件上传+后台数据搜索
废话不多说,直接上代码 先说excel文件上传 用的是poi框架 先贴maven配置 <!-- poi导入excel文件--><dependency><groupId&g ...
最新文章
- docker容器网络 - 同一个host下的容器间通信
- Netflix CEO哈斯廷斯:内容为王 公司潜力依然巨大
- 13 种 JavaScript 代码技巧
- 深层高斯过程最新综述:全面阐述高斯过程的核心动机、数学公式和局限性
- windows server 2008 iis6.0 无法下载.exe
- 安卓应用安全指南 4.1.1 创建/使用活动 示例代码
- Office 365 SharePoint 迁移浅谈 (一)开篇介绍
- adb devices 找不到夜神模拟器解决方法
- PostgreSQL的pg_hba.conf文件讲解
- 新手老问题---------跨线程的控件访问
- 用python 类方法写好友管理系统
- Thinkpad蓝牙键盘驱动安装和常见问题
- 傅里叶光学随机散斑原理 matlab仿真实现随机散斑
- Kodak Preps 8 for Mac(专业拼版软件)
- 论文参考文献格式写法
- 为ramda添加类型
- 数据归档,冷热数据分离
- 二维码扫码登陆过程分析
- 基于OBD系统的量产车评估测试(PVE),你知多少?
- win10内存占用率过高怎么办?Win10电脑内存占用率很高的原因和解决方法
热门文章
- Generate GUID using vbscript
- (转)ZwQuerySystemInformation枚举内核模块及简单应用
- 指甲之指甲长期没有甲半月弧(二)
- OpenCV显示中文汉字,未使用CvxText和FreeType库
- component是什么接口_阿里高级技术专家:整洁的应用架构“长”什么样?
- ug11 linux,UG11.0升级包MP02Win#Linux系统下载就上UG网
- 全国职业院校技能大赛软件测试题目,我院荣获2017年全国职业院校技能大赛软件测试赛项一等奖...
- 前端全栈大佬是如何使用javaScript实现一个无缝轮播优化
- 孙叫兽进阶之路之软件测试基础知识
- 致我们曾经白嫖的网站