zoukankan      html  css  js  c++  java
  • java实现的Excel批量导入

      导入Maven

    1     <dependency>
    2             <groupId>org.jeecg</groupId>
    3             <artifactId>easypoi-base</artifactId>
    4             <version>2.3.1</version>
    5         </dependency>

      本人的Excle表

      

      

      定义一个实体类用于接收解析Excle里的数据

    package ********.entity;
    
    import java.io.Serializable;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    /**
     * 批量导入的实体类
     * @author 
     *
     */
    @Data
    @NoArgsConstructor    
    @AllArgsConstructor
    public class TblFixChange implements Serializable{
    
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        /**手机号**/
        private String preferentialPhone;
        /**车牌号**/
        private String preferentialCarNumber;
        
        /**-- 优惠分组的id --**/
        private String groupingId;
    
        /**-- 创建时间 --**/
        private String createTime;
    
        /**-- 修改时间 --**/
        private String modifyTime;
    
    
    }

      Controller

        //导入
        @RequestMapping(value = "/im/activity/upload", method = RequestMethod.POST)
        public Map<String, Object> importExcel(@RequestParam("file") MultipartFile file) throws IOException, Exception{
            Map<String, Object> map = new HashMap<String, Object>();
            try {
                map = groupConfigService.importExcel(file);
                
            } catch (Exception e) {
                map.put("status",-1);
                map.put("data", "导入异常");
            }
            return map;
            
        }

      serviceImpl

    /**
         * 批量导入(批量添加)
         */

          private static final String XLS = "xls";
          private static final String XLSK = "xlsx";  //定义全局的常量值

    
        @SuppressWarnings("resource")
        public Map<String, Object> importExcel(MultipartFile file) throws Exception {
            List<TblFixChange> list = new ArrayList<TblFixChange>();
            Map<String, Object> rsultMap = new HashMap<String, Object>();
          
            
            Workbook workbook = null;
            String fileName = myFile.getOriginalFilename();
            if(fileName.endsWith(XLS)) {
                //2003
                try {
                    workbook = new HSSFWorkbook(file.getInputStream());
                } catch (Exception e) {
                    e.printStackTrace( );
                }
                
            }else if(fileName.endsWith(XLSK)) {
                try {
                    //2007
                    workbook = new XSSFWorkbook(file.getInputStream());
                } catch (Exception e) {
                    e.printStackTrace( );
                }
            }else {
                throw new Exception("文件不是Excel文件");
            }
            Sheet sheet = workbook.getSheet("Sheet1");
            int rows = sheet.getLastRowNum();//指定行数。一共多少+
            if(rows==0) {
                throw new Exception("请填写行数");
            }
            
            for (int i = 1; i < rows+1; i++) {
                //读取左上端单元格
                Row row = sheet.getRow(i);
                //行不为空
                if(row != null) {
                    //读取cell
                    TblFixChange tblFixChange = new TblFixChange();
                    //手机号
                    String phone = getCellValue(row.getCell(0));
                    tblFixChange.setPreferentialPhone(phone);
                    //车牌号
                    String catNumber = getCellValue(row.getCell(1));
                    tblFixChange.setPreferentialCarNumber(catNumber);
                    //组的id
                    String groupId = getCellValue(row.getCell(2));
                 
                    tblFixChange.setGroupingId(groupId);

              SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
              String time = sdf.format(new Date());
              tblFixChange.setCreateTime(time);
              tblFixChange.setModifyTime(time);

                    list.add(tblFixChange);  //把实数据放入集合里
                }
            }
            try {
                groupConfigDao.addBatchMembers(list);  //批量添加 (执行sql语句批量增加)
                rsultMap.put("status", 1);
                rsultMap.put("data", "导入数据成功");
            } catch (Exception e) {
                rsultMap.put("status", -1);
                rsultMap.put("data", "导入数据异常");
            }
            
            return rsultMap;
        }
    //获取Cell内容
        private String getCellValue(Cell cell) {
            String value = "";
            if(cell != null) {
                //以下是判断数据的类型
                switch (cell.getCellType()) {
                case HSSFCell.CELL_TYPE_NUMERIC://数字
                    value = cell.getNumericCellValue() + "";
                    if(HSSFDateUtil.isCellDateFormatted(cell)) {
                        Date date = cell.getDateCellValue();
                        if(date != null) {
                            value = new SimpleDateFormat("yyyy-MM-dd").format(date);
                        }else {
                            value = "";
                        }
                    }else {
                        value = new DecimalFormat("0").format(cell.getNumericCellValue());
                    }
                    break;
                case HSSFCell.CELL_TYPE_STRING: //字符串
                    value = cell.getStringCellValue();
                    break;
                case HSSFCell.CELL_TYPE_BOOLEAN: //boolean
                    value = cell.getBooleanCellValue() + "";
                    break;
                case HSSFCell.CELL_TYPE_FORMULA: //公式
                    value = cell.getCellFormula() + "";
                    break;
                case HSSFCell.CELL_TYPE_BLANK: //空值
                    value = "";
                    break;
                case HSSFCell.CELL_TYPE_ERROR: //故障
                    value = "非法字符";
                    break;
                default:
                    value = "未知类型";
                    break;
                }
            }
            return value.trim();
        }
        

    sql语句的批量增加(本人的id是自增长的)

    <insert id="addBatchMembers"  parameterType="java.util.List">
        
            INSERT INTO activity_prefere (
            <trim suffix="" suffixOverrides=",">
                 preferential_car_number ,
                 grouping_id ,
                 create_time ,
                 modify_time ,
                 preferential_phone 
            </trim>
            ) VALUES 
            <foreach collection="list" item="item" index="index" separator=",">
                (
                    #{item.preferentialCarNumber} ,
                    #{item.groupingId} ,
                    #{item.createTime} ,
                    #{item.modifyTime} ,
                    #{item.preferentialPhone} 
                )
               </foreach>
        </insert> 
  • 相关阅读:
    [BZOJ5020] [THUWC 2017]在美妙的数学王国中畅游
    [BZOJ3876] [AHOI2014&JSOI2014]支线剧情
    [BZOJ5120] [2017国家集训队测试]无限之环
    [BZOJ2959] 长跑
    [BZOJ2502] 清理雪道
    SSM-MyBatis-08:Mybatis中SqlSession的commit方法为什么会造成事物的提交
    SSM-MyBatis-07:Mybatis中SqlSession的insert和delete底层到底做了什么
    SSM-MyBatis-06:Mybatis中openSession到底做了什么
    SSM-MyBatis-05:Mybatis中别名,sql片段和模糊查询加getMapper
    SSM-MyBatis-04:Mybatis中使用properties整合jdbc.properties
  • 原文地址:https://www.cnblogs.com/huigee/p/10820741.html
Copyright © 2011-2022 走看看