Springboot excel导入 EasyPOI 双表头的excel 导入数据

简介: 在工作中难免会遇到excel的数据导入。但是有些时间Excel的表头却不那么友好的

直接看图

这里就出现双表头的头的导入

第一步 :导包

maven


<dependency>

           <groupId>cn.afterturn</groupId>

           <artifactId>easypoi-base</artifactId>

           <version>3.2.0</version>

       </dependency>

       <dependency>

           <groupId>cn.afterturn</groupId>

           <artifactId>easypoi-web</artifactId>

           <version>3.2.0</version>

       </dependency>

       <dependency>

           <groupId>cn.afterturn</groupId>

           <artifactId>easypoi-annotation</artifactId>

           <version>3.2.0</version>

       </dependency>


第二步:

model 层

导入的员工肯定有一个实体类对应。在实体类上加上 @Excel(name = “”)


@Entity

@Table(name = "employee")

public class Employee implements Serializable {

   @Id

   @GeneratedValue(strategy = GenerationType.AUTO)

   private Long id;


   @Column(nullable = false)

   @Excel(name = "姓名")

   private String empName;


   @Column(nullable = false)

   @Excel(name = "身份证号")

   private String idCardNo;


   @Column(nullable = false)

   @Excel(name = "手机号")

   private String phone;


   @Excel(name = "工号")

   private String empNo;


   @Excel(name = "性别")

   private int sex;


   private Byte maritalStatus;


   @Excel(name = "邮箱")

   private String email;


   @Excel(name = "QQ")

   private String qq;


   @Excel(name = "微信号")

   private String wechat;


   @Column(nullable = false)

   private Long deptId;


   private Long jobId;


   @Excel(name = "员工状态")

   private String empStatus;


   @Column(nullable = false)

   private Boolean isUser;


   @Excel(name = "入职时间",format = "yyyy/MM/dd")

   private Date hiredate;


   private String remark;


   private Date createTime;


   private Long createBy;


   @Column(nullable = false)

   private Long guildId;


   private Boolean isLeader;


   @Excel(name = "民族")

   private String nation;


   @Excel(name = "户籍性质")

   private String householdRegister;


   @Excel(name = "户口所在地")

   private String idAddress;


   private String nowAddress;


   @Excel(name = "籍贯")

   private String nativePlace;


   @Excel(name = "岗位")

   private String postName;


   @Excel(name = "转正时间",format = "yyyy/MM/dd")

   private Date workdate;


   @Excel(name = "合同结束日期",format = "yyyy/MM/dd" )

   private Date enddate;


   @Excel(name = "工资卡号",groupName = "账户信息",orderNum = "16")

   private String bankCardNo;


   @Excel(name = "开户行及支行")

   private String openingBank;


  @Excel(name = "名字",groupName = "紧急联系人",orderNum = "21")

   private String urgentName;


  @Excel(name = "关系")

   private String urgentRelationship;


   @Excel(name = "电话")

   private String urgentPhone;


   private String laborUrl;


   private String diplomaUrl;


   private String identityUrl;


   private String nickName;


   @Excel(name = "部门",groupName = "职位信息",orderNum = "13")

   private String dept;


   @Excel(name = "二级部门(运营分组)")

   private String twoDept;


一般来说都是写一个 @Excel(name = “电话”) 对应excel的表头就可以,但是有些就是数据就是对应不上。

这个时候你就需要用到

@Excel(name = “部门”,groupName = “职位信息”,orderNum = “13”)


这样实体类的工作就算完成了,日期的很简单转换的,看你传入什么格式,你用format 属性 标记一下就可以

就下来就是导入了

第三步

controller


   @RequestMapping(value = "/importEmployeeExcel", method = RequestMethod.POST)

   @ApiOperation(value = "导入员工表", notes = "", response = Result.class)

   public Result importEmployeeExcel(MultipartFile multipartFile) throws IOException {

       ImportParams params = new ImportParams();

       // 这里是设置标题的行数。一般都是一行(就是上面第一张图里面的员工信息一行),也有没有标题的,没有标题行就设置为0

       params.setTitleRows(1);

       // 这里就是双表头的行数。所以它是2 ,因为表头行占了2行。所以如果你只有一行,就是1

       params.setHeadRows(2);

       // 这个设置的是 sheet 的页数,有可能一个Excel有多个sheet ,默认从0开始

       params.setStartSheetIndex(0);  

       try {

           // 这个直接复制过去,改一下实体类就可以

           List<Employee> employeeList = ExcelImportUtil.importExcel( multipartFile.getInputStream(), Employee.class, params);

           System.out.println(employeeList);

           this.employeeService.insertEmployeeList(employeeList);


       } catch (Exception e) {

           e.printStackTrace();

       }

       return super.success();

   }


当然,这只是我自己做的,测试是没有问题的,如果不能解决你的问题请到官网easyPOI官网

————————————————

版权声明:本文为CSDN博主「memory_cood」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/memory_cood/article/details/104477598

相关文章
|
2月前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
9天前
|
前端开发 Java easyexcel
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
45 8
|
1月前
|
Java Maven Android开发
eclipse如何导入springboot项目
本文介绍了如何在Eclipse中导入Spring Boot项目。
26 1
eclipse如何导入springboot项目
|
1月前
|
easyexcel Java UED
SpringBoot中大量数据导出方案:使用EasyExcel并行导出多个excel文件并压缩zip后下载
在SpringBoot环境中,为了优化大量数据的Excel导出体验,可采用异步方式处理。具体做法是将数据拆分后利用`CompletableFuture`与`ThreadPoolTaskExecutor`并行导出,并使用EasyExcel生成多个Excel文件,最终将其压缩成ZIP文件供下载。此方案提升了导出效率,改善了用户体验。代码示例展示了如何实现这一过程,包括多线程处理、模板导出及资源清理等关键步骤。
|
2月前
|
前端开发 Java easyexcel
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
41 6
|
3月前
|
JavaScript 前端开发 easyexcel
基于SpringBoot + EasyExcel + Vue + Blob实现导出Excel文件的前后端完整过程
本文展示了基于SpringBoot + EasyExcel + Vue + Blob实现导出Excel文件的完整过程,包括后端使用EasyExcel生成Excel文件流,前端通过Blob对象接收并触发下载的操作步骤和代码示例。
575 0
基于SpringBoot + EasyExcel + Vue + Blob实现导出Excel文件的前后端完整过程
|
3月前
|
前端开发 easyexcel
SpringBoot+Vue3实现Excel导入
SpringBoot+Vue3实现Excel导入
107 0
|
28天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
133 1
|
12天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
92 62
|
10天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
26 2