技术说明:
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")@ResponseBodypublic 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>() {/*** 解析每一条数据的时候被调用*/@Overridepublic void invoke(BossDo data, AnalysisContext context) {//在这里操作,将解析的每一条数据保存到数据库中,在这里可以调用数据库System.out.println("解析的数据为: "+data);list.add(data);//解析每一条数据,保存到上述list集合}/*** 解析完所有数据的时候被调用*/@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {for(BossDo bossDo : list) {bossService.insertBoss(bossDo);//这里是从list集合中,把每一条数据保存到数据库; bossService.insertBoss是我业务侧保存数据的方法}}}).sheet().doRead();return CommonReturnType.success();}