1. 程式人生 > >spring-excel-導入

spring-excel-導入

cep bsp map main stp sco wire idp -i

1js

/**
 * 導入window
 */
Ext.define(‘ppData.priceApplyIndex.priceApplyIndexWinUpload‘, {
    extend: ‘Ext.window.Window‘,
    title:‘資源上傳‘,   
    width:400,   
    height:200,
    id :null,
    minWidth:300,   
    minHeight:100,  
    closeAction : ‘hide‘,
    layout:‘fit‘,   
    plain:true,   
    bodyStyle:
‘padding:5px;‘, buttonAlign:‘center‘, formUpload:null,//上傳form getFormUpload:function(){ if(Ext.isEmpty(this.formUpload)){ this.formUpload = Ext.create(‘ppData.priceApplyIndex.priceApplyIndexFormUpload‘); } return this.formUpload; }, overlapErrorMessageWindow :
null, getOverlapErrorMessageWindow : function(){ this.overlapErrorMessageWindow = Ext.create(‘ppData.priceApplyIndex.OverlapErrorMessageWindow‘); return this.overlapErrorMessageWindow; }, initComponent: function() { var me = this; var formUpload = me.getFormUpload(); me.items
=[formUpload]; me.buttons = [{ text: ‘上 傳‘, handler: function() { var parm=‘‘; if(!Ext.isEmpty(me.id)){ parm=‘?id=‘+me.id; } if(formUpload.form.isValid()){ formUpload.getForm().submit({ url:‘../pp/importPpPrice.do‘+parm, waitMsg:‘正在導入數據,請稍候。。。‘, waitTitle:‘提示‘, success: function(form, action){ Ext.ux.Toast.msg("提示", "導入成功"); me.close(); }, failure: function(form, action){ var json = Ext.decode(action.response.responseText); Ext.ux.Toast.msg("提示", json.msg, ‘error‘); }, exception : function(from, action) { me.close(); try{ var json = Ext.decode(action.response.responseText); if(json.success){ me.close(); Ext.ux.Toast.msg("提示", json.msg, ‘success‘); if(json.success){ var selectResultPanel = Ext.getCmp("ppData.priceApplyIndex.activityDiscountPageElementGridPanel"); selectResultPanel.getPagingToolbar().moveFirst(); } }else{ // 彈窗展示錯誤消息 var overlapErrorMessageWindow = me.getOverlapErrorMessageWindow(); var overlapErrorMessageForm = overlapErrorMessageWindow.getOverlapErrorMessageForm(); // 設置錯誤消息 overlapErrorMessageForm.getForm().findField("errorMessage").setValue(json.msg); overlapErrorMessageWindow.show(); } }catch(err){ Ext.ux.Toast.msg(‘提示‘, err, ‘error‘); } } }); } } },{ text: ‘取 消‘, handler:function(){ me.hide(); } }]; me.callParent(); } }); /** * 導入文件from */ Ext.define(‘ppData.priceApplyIndex.priceApplyIndexFormUpload‘, { extend:‘Ext.form.FormPanel‘, items: [{ xtype: ‘filefield‘, emptyText: ‘請選擇文件‘, fieldLabel: ‘報價導入‘, buttonText: ‘瀏覽‘, allowBlank:false, name : ‘file‘, validator: function(value){ var arr = value.split(‘.‘); if(arr[arr.length-1] != ‘xlsx‘){ return ‘文件不合法,必須是.xlsx後綴結尾‘; }else{ return true; } }, buttonConfig: { iconCls: ‘upload-icon‘ } }] }); /** * 導入window(送貨費) */ Ext.define(‘ppData.priceApplyIndex.priceApplyIndexWinUploadDeliveryFee‘, { extend: ‘Ext.window.Window‘, title:‘資源上傳‘, width:400, height:200, id :null, minWidth:300, minHeight:100, closeAction : ‘hide‘, layout:‘fit‘, plain:true, bodyStyle:‘padding:5px;‘, buttonAlign:‘center‘, formUpload:null,//上傳form getFormUpload:function(){ if(Ext.isEmpty(this.formUpload)){ this.formUpload = Ext.create(‘ppData.priceApplyIndex.priceApplyIndexFormUploadDeliveryFee‘); } return this.formUpload; }, overlapErrorMessageWindow : null, getOverlapErrorMessageWindow : function(){ this.overlapErrorMessageWindow = Ext.create(‘ppData.priceApplyIndex.OverlapErrorMessageWindow‘); return this.overlapErrorMessageWindow; }, initComponent: function() { var me = this; var formUpload = me.getFormUpload(); me.items=[formUpload]; me.buttons = [{ text: ‘上 傳‘, handler: function() { var parm=‘‘; if(!Ext.isEmpty(me.id)){ parm=‘?id=‘+me.id; } if(formUpload.form.isValid()){ formUpload.getForm().submit({ url:‘../pp/importPpDeliveryFee.do‘+parm, waitMsg:‘正在導入數據,請稍候。。。‘, waitTitle:‘提示‘, success: function(form, action){ Ext.ux.Toast.msg("提示", "導入成功"); me.close(); }, failure: function(form, action){ var json = Ext.decode(action.response.responseText); Ext.ux.Toast.msg("提示", json.msg, ‘error‘); }, exception : function(from, action) { me.close(); try{ var json = Ext.decode(action.response.responseText); if(json.success){ me.close(); Ext.ux.Toast.msg("提示", json.msg, ‘success‘); if(json.success){ var selectResultPanel = Ext.getCmp("ppData.priceApplyIndex.activityDiscountPageElementGridPanel"); selectResultPanel.getPagingToolbar().moveFirst(); } }else{ // 彈窗展示錯誤消息 var overlapErrorMessageWindow = me.getOverlapErrorMessageWindow(); var overlapErrorMessageForm = overlapErrorMessageWindow.getOverlapErrorMessageForm(); // 設置錯誤消息 overlapErrorMessageForm.getForm().findField("errorMessage").setValue(json.msg); overlapErrorMessageWindow.show(); } }catch(err){ Ext.ux.Toast.msg(‘提示‘, err, ‘error‘); } } }); } } },{ text: ‘取 消‘, handler:function(){ me.hide(); } }]; me.callParent(); } }); /** * 導入文件from(送貨費) */ Ext.define(‘ppData.priceApplyIndex.priceApplyIndexFormUploadDeliveryFee‘, { extend:‘Ext.form.FormPanel‘, items: [{ xtype: ‘filefield‘, emptyText: ‘請選擇文件‘, fieldLabel: ‘送貨費導入‘, buttonText: ‘瀏覽‘, allowBlank:false, name : ‘file‘, validator: function(value){ var arr = value.split(‘.‘); if(arr[arr.length-1] != ‘xlsx‘){ return ‘文件不合法,必須是.xlsx後綴結尾‘; }else{ return true; } }, buttonConfig: { iconCls: ‘upload-icon‘ } }] }); /** * 錯誤消息Window */ Ext.define(‘ppData.priceApplyIndex.OverlapErrorMessageWindow‘, { extend: ‘Ext.window.Window‘, title:‘錯誤消息‘, width:400, height:320, minWidth:300, minHeight:100, layout:‘fit‘, plain:true, bodyStyle:‘padding:5px;‘, closeAction: ‘destroy‘, overlapErrorMessageForm:null, getOverlapErrorMessageForm:function(){ if(Ext.isEmpty(this.overlapErrorMessageForm)){ this.overlapErrorMessageForm = Ext.create(‘ppData.priceApplyIndex.OverlapErrorMessageForm‘); } return this.overlapErrorMessageForm; }, initComponent: function() { var me = this; me.items=[me.getOverlapErrorMessageForm()]; me.buttons = [{ cls : ‘yellow_button‘, text: ‘關閉‘, handler: function() { me.close(); } }]; me.callParent(); } }); /** * 錯誤消息Form */ Ext.define(‘ppData.priceApplyIndex.OverlapErrorMessageForm‘, { extend:‘Ext.form.FormPanel‘, items: [{ xtype : ‘textareafield‘, name : ‘errorMessage‘, autoScroll:true, anchor : ‘100%‘, height:300 }] });

2 mvc

    // 導入
    @Autowired(required = false)
    @Qualifier("ppPriceReader")
    private ExcelReader ppPriceReader;

 @SuppressWarnings("unchecked")
      @RequestMapping(value = "/importPpPrice.do")
      @ResponseBody
      public ResultEntity importPpPrice(@RequestParam(value = "file", required = false) MultipartFile file,
              HttpServletRequest request, ModelMap model,String id) {
          //得到當用戶
          UserEntity currentUser = DpapUserContext.getCurrentUser();
          ResultEntity resultEntity = new ResultEntity();
          if (file == null) {
              log.error("文件為空!", LogConstant.LOG_TYPE_EXCEPTION);
              resultEntity.setMsg("文件為空!");
              resultEntity.setSuccess(false);
          }
          String name = file.getOriginalFilename();// 獲取上傳文件名,包括路徑
          long size = file.getSize();
          if ((name == null || name.equals("")) && size == 0) {
              log.error("文件為空!", LogConstant.LOG_TYPE_EXCEPTION);
              resultEntity.setMsg("文件為空!");
              resultEntity.setSuccess(false);
          }
          try {
              InputStream in = file.getInputStream();
              Map<String, Object> beans = new HashMap<String, Object>();
              ReadStatus readStatus = ppPriceReader.readAll(in, beans);
              if (readStatus.getStatus() == 0) {
                  List<ImportPriceVo> list = (List<ImportPriceVo>)
                   beans.get("ppPrice_Import_Moddle");
                  if (CollectionUtils.isEmpty(list)) {
                      resultEntity.setMsg("解析數據為空!");
                      resultEntity.setSuccess(false);
                  }
                  // 分批導入限制
                  if (list.size() > 1000) {
                      resultEntity.setMsg("一次最多只能導入1000條數據");
                      resultEntity.setSuccess(false);
                      return resultEntity;
                  }

                  String msg = null;
                  // 執行導入方法
                 msg = ppAuditPriceMainService.importPrice(list, currentUser, id);
                  if (StringUtils.isNotBlank(msg)) {
                      resultEntity.setMsg(msg);
                      resultEntity.setSuccess(false);
                  } else {
                      resultEntity.setMsg("操作成功");
                      resultEntity.setSuccess(true);
                  }
              } else {
                  log.error("文件解析異常!", LogConstant.LOG_TYPE_EXCEPTION);
                  resultEntity.setMsg("文件解析異常!");
                  resultEntity.setSuccess(false);
              }
          } catch (IOException e) {
              log.error(e.getMessage(), LogConstant.LOG_TYPE_EXCEPTION, e);
              e.printStackTrace();
              resultEntity.setMsg("文件解析異常!詳情:" + e.getMessage());
              resultEntity.setSuccess(false);
          }
         return resultEntity;
      }

reader

技術分享

導入策略

技術分享

spring-excel-導入