react 前端框架如何驱动企业数字化转型与创新发展
957
2023-07-05
使用EasyPoi轻松导入导出Excel文档的方法示例
提到Excel的导入导出,大家肯定都知道alibaba开源的EasyExcel,该项目的github地址为:https://github.com/alibaba/easyexcel。
这个项目非常活跃,项目诞生的目的就是为了简化开发、降低内存消耗。我项目中也用过,但还是有一些槽点的,比如文档很简陋,功能做的不完善,不支持图片的读取等。所以,今天给大家推荐另外一款Excel处理的工具:EasyPoi。
一、EasyPoi简介
官网:http://afterturn-/
文档:http://easypoi.mydoc.io/
EasyPoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 语言(熟悉的表达式语法),完成以前复杂的写法 ,不如poi那么自定义,不如jxl那么多标签,但是我们就是写的少,写的少。
EasyPoi的主要特点
设计精巧,使用简单
接口丰富,扩展简单
默认值多,write less do more
spring mvc支持,web导出可以简单明了
二、EasyPoi的功能介绍
Excel自适应xls和xlsx两种格式,word只支持docx模式,功能还是挺丰富的。
1.Excel导入
注解导入
Map导入
大数据量导入sax模式
导入文件保存
文件校验
字段校验
2.Excel导出
注解导出
模板导出
html导出
3.Excel转html
4.word导出
5.pdf导出
三、重点功能介绍
1.注解
EasyPoi起因就是Excel的导入导出,最初的模板是实体和Excel的对应,model--row,filed--col 这样利用注解我们可以和容易做到excel到导入导出 经过一段时间发展,现在注解有5个类分别是
@Excel 作用到filed上面,是对Excel一列的一个描述
@ExcelCollection 表示一个集合,主要针对一对多的导出,比如一个老师对应多个科目,科目就可以用集合表示
@ExcelEntity 表示一个继续深入导出的实体,但他没有太多的实际意义,只是告诉系统http://这个对象里面同样有导出的字段
@ExcelIhttp://gnore 和名字一样表示这个字段被忽略跳过这个导导出
@ExcelTarget 这个是作用于最外层的对象,描述这个对象的id,以便支持一个对象可以针对不同导出做出不同处理
2.Excel 模板
模板是处理复杂Excel的简单方法,复杂的Excel样式,可以用Excel直接编辑,完美的避开了代码编写样式的雷区,同时指令的支持,也提了模板的有效性。就像下面这样使用,具体用法请看文档。
3.Excel<->Html的互转
4.Word模板导出
5.图片的导入导出
@Test//图片导入
public void test() {
try {
ImportParams params = new ImportParams();
params.setNeedSave(true);
List
new File(PoiPublicUtil.getWebRootPath("import/imgexcel.xls")),
CompanyHasImgModel.class, params);
for (int i = 0; i < result.size(); i++) {
System.out.println(ReflectionToStringBuilder.toString(result.get(i)));
}
Assert.assertTrue(result.size() == 4);
} catch (Exception e) {
e.printStackTrace();
}
}
}
//导出
@Excel(name = "公司LOGO", type = 2 ,width = 40 , height = 20,imageType = 1)
private String companyLogo;
6.Excel大数据导出
大数据导出是当我们的导出数量在几万,到上百万的数据时,一次从数据库查询这么多数据加载到内存然后写入会对我们的内存和CPU都产生压力,这个时候需要我们像分页一样处理导出分段写入Excel缓解Excel的压力 EasyPoi提供的是两个方法 强制使用 xssf版本的Excel 。具体代码看文档,我们看下资源占用即可:
多次测试用时统计,速度还是可以接受的。
数据量
用时
文件大小
列数
100W
16.4s
24.3MB
5
100W
15.9s
24.3MB
5
200W
29.5s
48.5MB
5
100W
30.8s
37.8MB
10
200W
58.7s
76.1MB
10
7.大数据导出View的用法
Easypoi view 项目是为了更简单的方便搭建在导出时候的操作,利用spring mvc 的view 封装,更加符合spring mvc的风格。EasypoiBigExcelExportView 是针对大数据量导出特定的View,在跳转到这个View的时候不需要查询数据,而且这个View自己去查询数据,用户只要实现IExcelExportServer接口就可以了 。
总结,Easypoi的功能强大,文档和示例代码丰富,大家在开发中如果有类似的需求,不妨一试。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~