• spring-excel-导入


    1js

    /**
     * 导入window
     */
    Ext.define('ppData.priceApplyIndex.priceApplyIndexWinUpload', {
        extend: 'Ext.window.Window',
        title:'资源上传',   
        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:'资源上传',   
        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:'错误消息',   
        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

     

     导入策略

  • 相关阅读:
    react 滑动删除组件
    004-Java进制转换
    003-JavaString数据类型
    002-Java数据类型
    001-Java命名规范
    【leetcode】804
    【MySQL】基本语句
    【python】
    hiveSql常见错误记录
    【数据库】-基本特性
  • 原文地址:https://www.cnblogs.com/zfzf1/p/7409797.html
Copyright © 2020-2023  润新知