Java中easypoi导入excel文件列名相同的处理方案

所属分类: 软件编程 / java 阅读数: 41
收藏 0 赞 0 分享

Easypoi是什么

Easypoi 功能如同名字easy,主打的功能就是容易,让一个没接触过poi的人员,就可以方便的写出Excel导出、Excel模板导出、Excel导入、Word模板导出,通过简单的注解和模板语言(熟悉的表达式fe语法),完成以前复杂的写法

开源地址:https://gitee.com/lemur/easypoi

独特的功能

  • 基于注解的导入导出,修改注解就可以修改Excel
  • 支持常用的样式自定义
  • 基于map可以灵活定义的表头字段
  • 支持一堆多的导出,导入
  • 支持模板的导出,一些常见的标签,自定义标签
  • 支持HTML/Excel转换,如果模板还不能满足用户的变态需求,请用这个功能
  • 支持word的导出,支持图片,Excel

更多特性与功能详解:easypoi官网说明

官方demo
官网实例工程:easypoi-test

导入

1. 指定模板导入

在导入指定Excel模板的过程中,可能会碰到列名重复的问题,当我们使用Easypoi的注解方式进行导入时,会发现出现丢失数据的情况,原因是源码在解析注解映射关系的时候,使用的map进行存储,当实体的注解存在相同名称时,key会被重新覆盖,导致数据列丢失,如图通过添加fixedIndex属性得以解决:

需要注意的是:fixedIndex是从0开始

Excel文件如图:

2. Map自由导入

  ImportParams importParams = new ImportParams();
  importParams.setTitleRows(3);//标题行
  importParams.setHeadRows(1);//表头行
  importParams.setStartSheetIndex(0);//开始的sheet下标
  importParams.setKeyIndex(null);//设置读取空值
  File file = new File("/file/file.xlsx");//文件路径
  try {
    List<Map> list = ExcelImportUtil.importExcel(file, Map.class, importParams);
  } catch (Exception e) {
    e.printStackTrace();
  }

存在的问题

  • 导入相同列名依旧会有丢失数据的问题,原因key重复,目前好像没找到解决办法
  • 遍历时默认map的值为空则不返回,通过设置setKeyIndex(null)可以解决该问题
  • 当表头存在多个的时候,遍历的titlemap存在问题,详见issues

小结

总的来说,easypoi功能还是很强大,使用上也简单,主要是把数据结构想清楚,之后的导入导出逻辑就很简单了,本文example 在GitHub上地址:easypoi-demo

更多精彩内容其他人还在看

SpringBoot SpEL语法扫盲与查询手册的实现

这篇文章主要介绍了SpringBoot SpEL语法扫盲与查询手册的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Java创建子线程的两种方法

这篇文章主要介绍了Java创建子线程的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Spring Boot2.x集成JPA快速开发的示例代码

这篇文章主要介绍了Spring Boot2.x集成JPA快速开发,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

关于Java中的mysql时区问题详解

这篇文章主要给大家介绍了关于Java中mysql时区问题的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

JAVA参数传递方式实例浅析【按值传递与引用传递区别】

这篇文章主要介绍了JAVA参数传递方式,结合实例形式分析了java按值传递与引用传递区别及相关操作注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

Java中MessageDigest来实现数据加密的方法

这篇文章主要介绍了Java中MessageDigest来实现数据加密的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

spring 注解验证@NotNull等使用方法

这篇文章主要介绍了spring 注解验证@NotNull等使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

浅谈如何优雅地停止Spring Boot应用

这篇文章主要介绍了浅谈如何优雅地停止Spring Boot应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Python如何使用@property @x.setter及@x.deleter

这篇文章主要介绍了Python如何使用@property @x.setter及@x.deleter,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Java Jmeter全局变量设置过程图解

这篇文章主要介绍了Java Jmeter全局变量设置过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多