Java导入导出Excel工具 easyexcel
做Java开发的同学,尤其是做管理后台的同学绝大多数都会接触到报表系统,这时候就少不了Excel的导入和导出了。Java解析生成Excel比较有名的有Apache POI ,但是POI存在缺陷就是所有的数据的解析都是在内存中进行的,内存消耗极大,如果数据量稍微一大容易出现内存溢出。alibaba提供的easyexcel就很好的解决了这个问题,不但不会出现内存溢出而且使用也极其方便,下面就一起来简单学习一下吧。
引入依赖包
在maven仓库中搜索 easyexcel 找到 alibaba的easyexcel依赖包,复制添加到pom文件中
1.简单写操作
1.1写入到指定文件夹
创建需要写出的数据模型 DemoData.class
贴上@ExcelProperty注解表示该字段需要导出到excel中去,value 的值表示该字段导出到excel中的所在列的列名。@ExcelIgnore注解表示忽略该字段,该字段将不会被导出到Excel中去。
上图是创建需要导出的示例数据和最终导出excel的代码,excel文件将被写入到 “C:/write/write.xlsx” 路径下。你没有看错真的核心导出代码只有两句就够了。
上图就是导出的Excel效果图,是不是比POI简单多了呢?
1.2 web中的写
所有的要导出的数据都在response中的outputStream流中,前端通过解析这个流就可以到处Excel文件,由于本人水平有限前端不够熟悉故而只给出后端Java代码。
2.简单读操作
2.1指定导入文件的读
说完了导出再来说说导入吧,导入比导出稍微复杂一点。导入有一个重要的概念叫做监听器。下图就是创建了一个监听器。但是需要强调的一点是 DemoDataListener 不能被spring管理,要每次读取excel都要new,然后里面用到spring可以用构造方法传进去。
这里简单的saveData方法中就没有写存入数据库的业务,我们主要看的是有没有成功读入数据这里将读入的数据全部打印在控制台。
由控制台的打印输出可以看出,每读入3条数据也就是达到了自定义的BATCH_COUNT值就调用了一次saveData方法。最后一次只有一条数据是当所有的数据解析完之后最后调用了saveData方法。
2.2web中的读
此时读入的数据全部在listener中进行解析,然后调用业务方法将读入的数据进行存库就和之前讲的是一样的操作了,这里也只给出Java代码。
好了这就是easyexcel的初步简单用法,如有错误和不足之处请各位大佬不吝赐教!