前台extjs后台 java poi 读取excel数据到数据库中
2016-02-29 10:15
579 查看
extJs的前台部分:
1.定义导出按钮:
this.returnJnlImportBtn1 = new Ext.Button({
text : "账户调整前导入",
id : "returnJnl_import1",
iconCls : "icon-add",
hidden: false,
scope : this,
handler : this.importData1
});
2,触发的方法:
importData1 : function() {
var _this = this;
var filePath = new Ext.form.FileUploadField({
fieldLabel : "导入文件路径<font color = 'red'><b>*</b></font>",
buttonText : "选择...",
name : "filePath",
emptyText : "请选择导入文件...",
labelStyle : "text-align : right"
});
var importExcel = new Ext.Button({
text : "提交",
handler : function() {
var fileType = ".xlsx|.xls|"
var filePathValue = filePath.getValue();
if (filePathValue == null || filePathValue == "") {
Ext.Msg.alert("提示", "请选择要导人查询的excle文件");
return false;
}
var v = filePathValue.substring(filePathValue
.lastIndexOf("."));
if (fileType.indexOf(v + "|") == -1) {
Ext.Msg.alert("提示", "您上传的文件格式不兼容,请选择excel格式!");
return;
}
batch_panel.getForm().standardSubmit = false;
batch_panel.getForm().submit({
method : "POST",
async : true,
waitMsg : '正在上传文件,请稍候...',
success : function(form, action) {
Ext.Msg.alert("提示", action.result.data);
batch_win.close();
},
failure : function(form, action) {
Ext.Msg.alert("提示", action.result.data);
return;
}
});
}
});
var closeBtn = new Ext.Button({
text : "取消",
handler : function() {
batch_win.close();
}
});
var batch_panel = Ext.create("Ext.form.Panel", {
labelAlign : "right",
border : false,
autoHeight : true,
frame : true,
fileUpload : true,
enctype : "multipart/form-data",
url : 'returnJnl/returnJnlImport1',
items : [ {
layout : "column",
border : false,
items : [ {
columnWidth : .70,
layout : 'form',
border : false,
items : [ filePath ]
} ]
} ],
buttons : [ importExcel, closeBtn ],
buttonAlign : "center"
});
var batch_win = new Ext.Window({
title : "退单调整前导入",
border : false,
autoDestroy : false,
closeAction : "close",
hideMode : "destory",
resizable : false,
modal : true,
layout : "fit",
autoScroll : true,// 自动显示滚动条
width : 700,
height : 100,
items : [ batch_panel ]
});
batch_win.show();
}
后台springmvc的controller部分:
@ResponseBody
@RequestMapping("/returnJnlImport1")
/*这里的ResponseEntity<T> 继承于 HttpEntity<T> ,并添加了了构造方法
public ResponseEntity(T body, MultiValueMap<String, String> headers, HttpStatus statusCode) {
super(body, headers);
this.statusCode = statusCode;
} */
public ResponseEntity<String> excelImport1(HttpServletRequest request,
HttpServletResponse response, MultipartFile filePath)
throws Exception {
String errMsg = "";
HttpHeaders headers = new HttpHeaders();
MediaType mt = new MediaType("text", "html", Charset.forName("UTF-8"));
headers.setContentType(mt);
String json = "";
try{
Workbook hssfBook = null;
InputStream is = filePath.getInputStream();//获取excel数据
if (filePath.getOriginalFilename().contains(".xlsx")) {
hssfBook = new XSSFWorkbook(is); // excel2007
} else {
hssfBook = new HSSFWorkbook(is); // excel2003
}
String[] tableHeader = new String[] { "退票流水号","结算划款通道", "退单时间", "退单原因",
"原收款户号", "原收款账名", "原联行行号", "原开户行名", "原账户标识(1对私/0对公)", "交易金额","交易备注",
"商户号", "商户名称", "签约分公司", "新收款户号","新收款账名","新联行行号","新开户行名","新账户标识(1对私/0对公)", };
Sheet sheet = hssfBook.getSheetAt(0);
int rowNum = sheet.getLastRowNum();
if (rowNum ==0) {//指表头
errMsg = "您上传的excel没有数据!";
json = "{success:false, data:'" + errMsg + "'}";
return new ResponseEntity<String>(json, headers, HttpStatus.OK);
}
Row row = sheet.getRow(0);//第一行数据
int colNum = 0;
colNum = row.getLastCellNum();
//验证表头格式是否正确
for (int i = 0; i < tableHeader.length; i++) {
row.getCell(i).setCellType(Cell.CELL_TYPE_STRING);
if (!tableHeader[i].trim().equals(
row.getCell(i).getStringCellValue().trim())) {
errMsg = row.getCell(i).getStringCellValue().trim()+"--"+tableHeader[i].trim()+"--"+"模板列头不正确!";
json = "{success:false, data:'" + errMsg + "'}";
return new ResponseEntity<String>(json, headers,
HttpStatus.OK);
}
}
if (errMsg.equals("")) {
List<Map<String, Object>> mapList = new ArrayList<Map<String, Object>>();
for (int i = 1; i <=rowNum; i++) {
row = sheet.getRow(i);
colNum = row.getLastCellNum();
// 验证退票流水号是否数据库已经存在!
errMsg = validateIdExist(row,i );
if (errMsg.equals("")) {
//将读取的数据存到数据库
getContentAll(row, mapList,tableHeader.length);
} else {
json = "{success:false, data:'" + errMsg + "'}";
return new ResponseEntity<String>(json, headers,
HttpStatus.OK);
}
}
returnJnlFacade.returnJnlAdd(mapList);
json = "{success:true, data:'" + "退票调整前导入成功!" + "'}";
} else {
json = "{success:false, data:'" + errMsg + "'}";
}
}catch(Exception e){
json = "{success:false, data:'"+ e.getMessage() +"'}";
e.printStackTrace();
}
return new ResponseEntity<String>(json, headers, HttpStatus.OK);
}
这样就可以啦
1.定义导出按钮:
this.returnJnlImportBtn1 = new Ext.Button({
text : "账户调整前导入",
id : "returnJnl_import1",
iconCls : "icon-add",
hidden: false,
scope : this,
handler : this.importData1
});
2,触发的方法:
importData1 : function() {
var _this = this;
var filePath = new Ext.form.FileUploadField({
fieldLabel : "导入文件路径<font color = 'red'><b>*</b></font>",
buttonText : "选择...",
name : "filePath",
emptyText : "请选择导入文件...",
labelStyle : "text-align : right"
});
var importExcel = new Ext.Button({
text : "提交",
handler : function() {
var fileType = ".xlsx|.xls|"
var filePathValue = filePath.getValue();
if (filePathValue == null || filePathValue == "") {
Ext.Msg.alert("提示", "请选择要导人查询的excle文件");
return false;
}
var v = filePathValue.substring(filePathValue
.lastIndexOf("."));
if (fileType.indexOf(v + "|") == -1) {
Ext.Msg.alert("提示", "您上传的文件格式不兼容,请选择excel格式!");
return;
}
batch_panel.getForm().standardSubmit = false;
batch_panel.getForm().submit({
method : "POST",
async : true,
waitMsg : '正在上传文件,请稍候...',
success : function(form, action) {
Ext.Msg.alert("提示", action.result.data);
batch_win.close();
},
failure : function(form, action) {
Ext.Msg.alert("提示", action.result.data);
return;
}
});
}
});
var closeBtn = new Ext.Button({
text : "取消",
handler : function() {
batch_win.close();
}
});
var batch_panel = Ext.create("Ext.form.Panel", {
labelAlign : "right",
border : false,
autoHeight : true,
frame : true,
fileUpload : true,
enctype : "multipart/form-data",
url : 'returnJnl/returnJnlImport1',
items : [ {
layout : "column",
border : false,
items : [ {
columnWidth : .70,
layout : 'form',
border : false,
items : [ filePath ]
} ]
} ],
buttons : [ importExcel, closeBtn ],
buttonAlign : "center"
});
var batch_win = new Ext.Window({
title : "退单调整前导入",
border : false,
autoDestroy : false,
closeAction : "close",
hideMode : "destory",
resizable : false,
modal : true,
layout : "fit",
autoScroll : true,// 自动显示滚动条
width : 700,
height : 100,
items : [ batch_panel ]
});
batch_win.show();
}
后台springmvc的controller部分:
@ResponseBody
@RequestMapping("/returnJnlImport1")
/*这里的ResponseEntity<T> 继承于 HttpEntity<T> ,并添加了了构造方法
public ResponseEntity(T body, MultiValueMap<String, String> headers, HttpStatus statusCode) {
super(body, headers);
this.statusCode = statusCode;
} */
public ResponseEntity<String> excelImport1(HttpServletRequest request,
HttpServletResponse response, MultipartFile filePath)
throws Exception {
String errMsg = "";
HttpHeaders headers = new HttpHeaders();
MediaType mt = new MediaType("text", "html", Charset.forName("UTF-8"));
headers.setContentType(mt);
String json = "";
try{
Workbook hssfBook = null;
InputStream is = filePath.getInputStream();//获取excel数据
if (filePath.getOriginalFilename().contains(".xlsx")) {
hssfBook = new XSSFWorkbook(is); // excel2007
} else {
hssfBook = new HSSFWorkbook(is); // excel2003
}
String[] tableHeader = new String[] { "退票流水号","结算划款通道", "退单时间", "退单原因",
"原收款户号", "原收款账名", "原联行行号", "原开户行名", "原账户标识(1对私/0对公)", "交易金额","交易备注",
"商户号", "商户名称", "签约分公司", "新收款户号","新收款账名","新联行行号","新开户行名","新账户标识(1对私/0对公)", };
Sheet sheet = hssfBook.getSheetAt(0);
int rowNum = sheet.getLastRowNum();
if (rowNum ==0) {//指表头
errMsg = "您上传的excel没有数据!";
json = "{success:false, data:'" + errMsg + "'}";
return new ResponseEntity<String>(json, headers, HttpStatus.OK);
}
Row row = sheet.getRow(0);//第一行数据
int colNum = 0;
colNum = row.getLastCellNum();
//验证表头格式是否正确
for (int i = 0; i < tableHeader.length; i++) {
row.getCell(i).setCellType(Cell.CELL_TYPE_STRING);
if (!tableHeader[i].trim().equals(
row.getCell(i).getStringCellValue().trim())) {
errMsg = row.getCell(i).getStringCellValue().trim()+"--"+tableHeader[i].trim()+"--"+"模板列头不正确!";
json = "{success:false, data:'" + errMsg + "'}";
return new ResponseEntity<String>(json, headers,
HttpStatus.OK);
}
}
if (errMsg.equals("")) {
List<Map<String, Object>> mapList = new ArrayList<Map<String, Object>>();
for (int i = 1; i <=rowNum; i++) {
row = sheet.getRow(i);
colNum = row.getLastCellNum();
// 验证退票流水号是否数据库已经存在!
errMsg = validateIdExist(row,i );
if (errMsg.equals("")) {
//将读取的数据存到数据库
getContentAll(row, mapList,tableHeader.length);
} else {
json = "{success:false, data:'" + errMsg + "'}";
return new ResponseEntity<String>(json, headers,
HttpStatus.OK);
}
}
returnJnlFacade.returnJnlAdd(mapList);
json = "{success:true, data:'" + "退票调整前导入成功!" + "'}";
} else {
json = "{success:false, data:'" + errMsg + "'}";
}
}catch(Exception e){
json = "{success:false, data:'"+ e.getMessage() +"'}";
e.printStackTrace();
}
return new ResponseEntity<String>(json, headers, HttpStatus.OK);
}
这样就可以啦
相关文章推荐
- 深入理解Java的接口和抽象类
- Java 回顾笔记8内部类
- 【leetcode】【28】Implement strStr()
- Java执行定时任务的方法(Timer、ScheduledExecutorService)
- Java 学习笔记 ------第五章 对象封装
- Java中的继承、封装、多态、抽象
- windows环境下如何安装jdk
- Java Enum 基本原理
- RxJava过滤操作符 debounce
- karaf 报错 Caused by: org.eclipse.jetty.io.EofException: early EOF
- java 实现多种排序
- java垃圾回收机制
- java选择排序
- 【leetcode】【27】Remove Element
- 学习Java多线程之线程定义、状态和属性
- JAVA学习20160229
- java中的注解
- eclipse代码格式化
- spring mvc 多数据源的配置
- 【leetcode】【26】Remove Duplicates from Sorted Array