EasyExcel简单写入操作(无对象、有对象)
一、使用EasyExcel实现简单写入操作
-
数据来源
private List<DemoData> data() { List<DemoData> list = ListUtils.newArrayList(); for (int i = 0; i < 10; i++) { DemoData data = new DemoData(); data.setString("字符串" + i); data.setDate(new Date()); data.setDoubleData(0.56); list.add(data); } return list; }
-
导入依赖
其他依赖,根据需要自行导入
<!--easyExcel依赖--> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.0.5</version> </dependency> <!--Junit测试依赖--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> </dependency>
1.有对象写入
在easyexcel中有对象写入的意思就是需要指定写入的数据的数据类型
首先建立一个实例对象DemoData类,如下:
/**
* 基本数据demodata
*/
@Data
public class DemoData {
@ExcelProperty(value = "字符串标题",index = "0")
private String stringTitle;
@ExcelProperty(value = "时间标题")
private Date dateTitle;
@ExcelProperty(value = "数字标题")
private int doubleTitle;
}
在该类中有三个属性,我们把它们作为我们的表头,在easyexcel中可以使用@ExcelProperty()注解来指定该属性在写入到Excel后表头的内容及其位置,
写入数据到Excel,我们可以直接调用Easyexcel的Write()方法,具体的使用如下:
public void writeDataToExcel_01() {
/**
* 获取到写入的数据
* 有多种方式,我只写了最简单的一种,可以自行去官网看其他
*/
String fileName = "testExcel_2.xlsx";
// write方法,指明文件写入路径和数据类型(表头),设置sheet名称,写入数据
EasyExcel.write(fileName, DemoData.class).sheet("模板").doWrite(dataList());
}
其中需要在write()中指定写入的文件路径和数据类型,之后通过sheet()方法来指定要写入的sheet的名称,最后在dowrite()中传入要写入的数据的list集合即可
- 结果
2.无对象写入
无对象写入,不需要指定要写入的数据的类型,可以直接传入一个存放数据的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;
}
- 结果