最近在做项目开发的时候,有用到easy excel技术来解析和写入excel,所以今天在这里和大家分享一下如何使用easy excel技术来解析excel文件的操作
Easyexcel技术是在poi的基础上发展起来的,它是对poi’的优化和提升,相对于poi来说,Easyexcel的好处就是在对文件读写的时候,是一行一行的读取的,这样做的好处就是在数据存储到数据库的时候,可以很好的避免内存消耗,占用较多的CPU资源。而且相对于poi,easyexcel的操作更加便捷,同样的操作,easyexcel的代码量更少。
使用easyexcel实现写入操作的方式有很多种,其中最常用的是有对象写入和无对象写入,接下来我会把这两种方式分别和大家进行介绍。
在easyexcel中有对象写入的意思就是需要指定写入的数据是何种类型的数据,这种写入方式也是比较简单的,我们以下面的一个实例来演示一下。
首先建立一个实例对象DemoData类,如下:
/** * 基本数据demodata * */ @Data public class DemoData { @ExcelProperty(value = "字符串标题") private String stringTitle; @ExcelProperty(value = "时间标题") private Date dateTitle; @ExcelProperty(value = "数字标题") private int doubleTitle; }
在该类中有三个属性,我们把它们作为我们的表头,在easyexcel中可以使用@ExcelProperty()注解来指定该属性在写入到Excel后表头的内容,
之后关于写入数据到Excel,我们可以直接调用Easyexcel的Write()方法,具体的使用如下:
public void writeDataToExcel_01() { log.info("将数据写入到excel,普通写法"); /** * 获取到写入的数据 */ log.info("即将开始写入【" + demoData.size() + "】条数据"); EasyExcel.write(FILEPATH + "testExcel_1.xlsx", DemoData.class).sheet("testSheet01").doWrite(demoData); log.info("【" + demoData.size() + "】条数据写入成功!"); }
其中需要在write()中指定写入的文件路径和数据类型,之后通过setSheet()方法来指定要写入的sheet的名称,最后在dowrite()中传入要写入的数据的list集合即可,得到的效果如下:
无对象写入其实更简单,我们不需要指定要写入的数据的类型,可以直接传入一个存放数据的list,即可完成数据的写入操作。但是无论是表头还是内容,都需要以list的形式传入,
实例如下:
/** * 不创建对象的写 */ @Test public void noModelWrite() { // 写法1 String fileName = "testExcel_1.xlsx"; // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭 EasyExcel.write(fileName).head(head()).sheet("模板").doWrite(dataList()); } private List<List<String>> head() { List<List<String>> list = ListUtils.newArrayList(); List<String> head0 = ListUtils.newArrayList(); head0.add("字符串" + System.currentTimeMillis()); List<String> head1 = ListUtils.newArrayList(); head1.add("数字" + System.currentTimeMillis()); List<String> head2 = ListUtils.newArrayList(); head2.add("日期" + System.currentTimeMillis()); list.add(head0); list.add(head1); list.add(head2); return list; } private List<List<Object>> dataList() { List<List<Object>> list = ListUtils.newArrayList(); for (int i = 0; i < 10; i++) { List<Object> data = ListUtils.newArrayList(); data.add("字符串" + i); data.add(new Date()); data.add(0.56); list.add(data); } return list; }
在这里需要注意的一点是:在使用无对象写入的时候,对于存放在list中的表头数据,需要每一列的表头都单独的存放在一个list中,否则写出的表格的表头会纵向排列,不行你可以试试哟!
以上就是使用easyexcel实现数据的有对象写入和无对象写入的操作了,关于easyexcel的操作还有很多,且听小猿之后和大家慢慢分享~
觉得不错记得点赞收藏哦,之后继续分享更多关于easyexcel的实用技巧,
我是灰小猿,我们下期见!