springboot结合阿里巴巴easyexcel,实现一键把Excel数据导入数据库

技术说明:

springboot:2.1.4.RELEASE
jQuery
Ajax
mysql:8.0.32

作业背景

我现在有个Excel表,里面有1000行数据,我不可能一个个录入数据库的,必须使用一键导入Excel,实现全部自动导入数据库。接下来就是实现这个功能的额,

pom.xml

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>4.0.2</version>
        </dependency>

如下实体类,每个字段上面加入对应的注解,如下代码:@ExcelProperty(value = "序号",index = 0),value的值,如果Excel表的表头,跟字段属性名称一致,可以不写。否则value的值,以Excel字段为准。index的值,就是你Excel表头的位置。第一个就是0开始,全部一一匹配即可,如果某个Excel表头不需要导入,使用@ExcelIgnore忽略

@Data
@AllArgsConstructor
@NoArgsConstructor
public class BossDo implements Serializable {

    //序号
    @ExcelProperty(value = "序号",index = 0)
    private Integer id;

    //面试时间
    @ExcelProperty(value = "面试时间",index = 1)
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    private Date interviewTime;

    //面试者姓名
    @ExcelProperty(value = "姓名",index = 2)
    private String name;

    //性别
    @ExcelProperty(value = "性别",index = 3)
    private String sex;

    //手机号
    @ExcelProperty(value = "手机号码",index = 4)
    private String phoneNumber;

    //年龄
    @ExcelProperty(value = "年龄",index = 5)
    private String age;

    //是否通过
    @ExcelProperty(value = "是否通过",index = 6)
    private String pass;

    //是否试岗
    @ExcelProperty(value = "是否试岗",index = 7)
    private String trial;

    //是否入职
    @ExcelProperty(value = "是否入职",index = 8)
    private String state;

    //邀约人
    @ExcelProperty(value = "面试邀约人",index = 9)
    private String belong;

    //备注
    //@ExcelIgnore
    @ExcelProperty(value = "备注",index = 10)
    private  String other;



}

创建导入的方法

说明:Ajax前端发起一个请求,请求地址是importExcel,我这里没有贴前段的代码,因为我当时就是测试,所以没有写。前段可以写一个上传的按钮来实现就可以了

    @RequestMapping("/importExcel")
    @ResponseBody
    public CommonReturnType  importExcel(HttpServletResponse response) {//CommonReturnType  这个是我自定义的返回数据的格式,你也可以直接返回string类型的字符串,"ok"
        //创建一个集合储存读取的数据
        List<BossDo> list = ListUtils.newArrayList();//BossDo这里对应你的实体类

        String fileName="C:\\Users\\86199\\Desktop\\到面统计表.xlsx";//这里是你本地Excel的路径
        EasyExcel.read(fileName, BossDo.class,
                new AnalysisEventListener<BossDo>() {

        /**
          * 解析每一条数据的时候被调用
         */
        @Override
        public void invoke(BossDo data, AnalysisContext context) {
         //在这里操作,将解析的每一条数据保存到数据库中,在这里可以调用数据库
         System.out.println("解析的数据为: "+data);
            list.add(data);//解析每一条数据,保存到上述list集合
         }

        /**
          * 解析完所有数据的时候被调用
          */
        @Override
        public void doAfterAllAnalysed(AnalysisContext context) {
             for(BossDo bossDo : list) {
                bossService.insertBoss(bossDo);//这里是从list集合中,把每一条数据保存到数据库; bossService.insertBoss是我业务侧保存数据的方法
                }
          }
         }).sheet().doRead();

        return  CommonReturnType.success();
    }
posted @ 2025-10-17 13:00  姜飞祥  阅读(6)  评论(0)    收藏  举报