您的位置:首页 > 编程语言 > Java开发

前台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);
}

这样就可以啦
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: