写在前面
最近在做项目开发的时候,有用到easy excel技术来解析和写入excel,所以今天在这里和大家分享一下如何使用easy excel技术来解析excel文件的操作
Easyexcel技术介绍
Easyexcel技术是在poi的基础上发展起来的,它是对poi’的优化和提升,相对于poi来说,Easyexcel的好处就是在对文件读写的时候,是一行一行的读取的,这样做的好处就是在数据存储到数据库的时候,可以很好的避免内存消耗,占用较多的CPU资源。而且相对于poi,easyexcel的操作更加便捷,同样的操作,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的实用技巧,
我是灰小猿,我们下期见!