前台extjs后台 java poi 读取excel数据到数据库中

来源:互联网 发布:澳门网络真人赌博攻略 编辑:程序博客网 时间:2024/04/29 23:00

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


这样就可以啦


0 0
原创粉丝点击