Java中easypoi导入excel文件列名相同的处理方案
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
上一篇:IntelliJ IDEA中折叠所有Java代码,再也不怕大段的代码了
栏 目:JAVA代码
下一篇:Java中抽象类和接口的区别_动力节点Java学院整理
本文标题:Java中easypoi导入excel文件列名相同的处理方案
本文地址:http://www.codeinn.net/misctech/51383.html


阅读排行
- 1Java Swing组件BoxLayout布局用法示例
- 2java中-jar 与nohup的对比
- 3Java邮件发送程序(可以同时发给多个地址、可以带附件)
- 4Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常
- 5Java中自定义异常详解及实例代码
- 6深入理解Java中的克隆
- 7java读取excel文件的两种方法
- 8解析SpringSecurity+JWT认证流程实现
- 9spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- 10深入解析java虚拟机




