easypoi 表头数据导入_Java中easypoi导入excel文件列名相同的处理方案

Easypoi是一款方便的Java Excel处理库,但遇到列名重复时可能导致数据丢失。通过在注解中添加fixedIndex属性可解决模板导入的列名冲突问题。对于Map自由导入,若列名重复,目前尚无直接解决方案,但可以通过设置ImportParams的keyIndex为null避免数据丢失。了解这些技巧,能更好地利用easypoi处理导入导出任务。
摘要由CSDN通过智能技术生成

Easypoi是什么

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

独特的功能

基于注解的导入导出,修改注解就可以修改Excel

支持常用的样式自定义

基于map可以灵活定义的表头字段

支持一堆多的导出,导入

支持模板的导出,一些常见的标签,自定义标签

支持HTML/Excel转换,如果模板还不能满足用户的变态需求,请用这个功能

支持word的导出,支持图片,Excel

官方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 list = ExcelImportUtil.importExcel(file, Map.class, importParams);

} catch (Exception e) {

e.printStackTrace();

}

存在的问题

导入相同列名依旧会有丢失数据的问题,原因key重复,目前好像没找到解决办法

遍历时默认map的值为空则不返回,通过设置setKeyIndex(null)可以解决该问题

当表头存在多个的时候,遍历的titlemap存在问题,详见issues

小结

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

到此这篇关于Java中easypoi导入excel文件列名相同的处理方案的文章就介绍到这了,更多相关Java 导入excel文件列名相同内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值