java EasyExcel集成及工具类使用
EasyExcel简介
- easyExcel是阿里巴巴开源poi插件之一,当前最新版本1.1.2-beta5,poi版本3.17,因此,集成时老版本poi需要提升poi版本,或者做版本隔离。
- 吐槽一下这个版本没有RELEASE版本
- 主要解决了poi框架使用复杂,sax解析模式不容易操作,数据量大起来容易OOM,解决了POI并发造成的报错
- 主要解决方式:通过解压文件的方式加载,一行一行的加载,并且抛弃样式字体等不重要的数据,降低内存的占用
- 具体实现原理,建议看github上的readme
EasyExcel优势
- 注解式自定义操作。
- 输入输出简单,提供输入输出过程的接口
- 支持一定程度的单元格合并等灵活化操作
EasyExcel劣势
- 框架不成熟,1.1.0版本后提供灵活接口的只剩beta版本
- 依然存在一些bug
- 没有一套完整的api
ExcelUtil快速使用
- maven引用(版本控制内若存在低版本POI,请升级版本和代码,官方POI版本3.17):
<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>1.1.2-beta5</version> </dependency>
- 工具类:
详见底部附带的github地址 - 实体类继承BaseRowModel ,对需要导出或者导入的字段增加@ExcelProperty注解,index值为对应excel中的列,value为表头,format为日期格式化
public class PersonDto extends BaseRowModel{ /** id */ @ExcelProperty(index = 0 , value = "id") private String id; /** 姓名 **/ @ExcelProperty(index = 1 , value = "姓名") private String name; /** 生日 **/ @ExcelProperty(index = 2 , value = "生日" , format = "yyyy-MM-dd") private String birth; }
导出:
ExcelUtil.writeExcel(response,exportVoList,"导出文件名","sheet1", ExcelTypeEnum.XLSX , PersonDto .class);
导入:
List<FundDto> importDtoList = ExcelUtil.readExcel(excelFile,PersonDto .class);
自定义样式注解:
- 在对应列上增加注解,修改对应的列上的参数,例
public class PersonDto extends BaseRowModel{ /** id */ @ExcelProperty(index = 0 , value = "id") private String id; /** 姓名 **/ @ExcelProperty(index = 1 , value = "姓名") private String name; /** 生日 **/ @ExcelProperty(index = 2 , value = "生日" , format = "yyyy-MM-dd") @CellStyleFormat(fillBackgroundColor= IndexedColors.LIGHT_YELLOW) @CellFontFormat(fontColor=IndexedColors.BLACK) private String birth; }
Ps.
- 后续有新的需要,可以就自定义注解的修改增加新的功能
目前已知存在问题:
- 自定义注解目前未经过多种场景的测试,出现问题,需要再修改
- 导入的实体类中配置了注解的属性为基本类型时,可能会读到一部分空行,这个问题目前需要EasyExcel的看看后续版本处理
EasyExcel github地址:https://github.com/alibaba/easyexcel
EasyExcelUtils github项目地址:https://github.com/wangxiaoxiongjuly/easyExcelUtils
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
java List的4种实现类
java List的4种实现类 以下都是个人理解的描述 ArrayList ArrayList是我们在java开发过程中最常见的一种List实现类,属于线程不安全,读取速度快的一种List实现类。也是java入门时最常用的实现类。 其中最重要的三个参数即如下代码所示,初始数组增量和一个数组 public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable { private static final int DEFAULT_CAPACITY = 10; transient Object[] elementData; private int size; ... } 因为ArrayList采用的是数组的方式实现,所以其取值速度快,插入碰到扩容问题时速度会减慢,主要原因可以看如下代码 public boolean add(E e) { ensureCapacityInternal(size +...
- 下一篇
当一个黑客去黑另一个黑客的电脑,会发生什么...
是我当黑客以来接到的一项最具挑战性的生意,是去黑另一个黑客的电脑。 工欲善其事,必先利其器,我很明白现今装备的重要性,于是我把自己从头武装到脚,包装上了全黑的紧身夜行衣和戴上墨镜。这样我看起来就很黑很客,很重很要了。 一出门,我就给车撞了…… 司机下车后,打着强光手电筒找了好半天才找到了躺在地上的我,说了一句:原来木乃伊也有黑色的。 赔了钱,我才起来继续前行,我想我赔给他的钱应该够他修车了吧。 路上行人稀疏,夜色迷朦,我觉得在这暗夜中隐隐有股飒飒的凛冽的英气的风在流淌,在舞动,在我刚撞散的大牙缝中飘摇进出。 慢慢地,很快我就到了目标地,任务是窃取那人的上网密码。对于一个娴熟的黑客高手来说,不消片刻我就已能将随身所带的手提电脑打开,接上无线上网卡,打开要用的程序了。接着就是怎样窃取了,方法是我趴在他窗前,密切注视他的举动,等他在键盘上打密码时迅速记下来,然后用手提电脑已打开的记事本写上,再立即通过无线上网传真到家里的传真机上保存下来。 很可惜那小子在我来之前已经输过密码了,害我在半夜三更趴了大约两小时他都没有要再输一次的举动,所以我惟有决定让他死机了。让他死机简直是易如反掌,当然这是只局...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题