阿里EasyExcel的操作
第一步:建立简单的maven项目,导入依赖
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
junit
junit
4.11
test
com.alibaba
easyexcel
2.2.3
org.projectlombok
lombok
1.18.12
第二步:新建一个实体类进行操作
1
2
3
4
5
6
7
8
9
10
package com.aaa;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/*
*
* 创建用户模版
* */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
//表格的属性名称,index可以进行排序 从0开始排序
@ExcelProperty(value = "用户编号",index = 0)
private Integer userId;
@ExcelProperty(value = "姓名",index = 1)
private String userName;
@ExcelProperty(value = "性别",index = 3)
private String gender;
@ExcelProperty(value = "工资",index = 2)
private Double salary;
@ExcelProperty(value = "入职时间",index = 4)
private Date date;
}
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
第三步:数据的写入
3.1 普通写入
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.test;
import com.aaa.User;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.builder.ExcelWriterBuilder;
import com.alibaba.excel.write.metadata.WriteSheet;
import org.junit.Test;
import java.util.*;
public class WriteTest {
/*
简单写方式一:
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
* */
@Test
public void test01(){
//创建一个Excel文档
String fileName="user1.xlsx";
//根据User模版构造数据
List list=new ArrayList<>();
User user=new User(1,"小明","男",12000.12,new
Date());
User user1=new User(2,"小米","男",12000.12,new
Date());
User user2=new User(3,"小红","男",12000.12,new
Date());
User user3=new User(4,"小张","男",12000.12,new
Date());
list.add(user);
list.add(user1);
list.add(user2);
list.add(user3);
//向表格中写数据
EasyExcel.write(fileName,User.class).sheet("用户信
息模版").doWrite(list);
}
/*
* 简单方式写方式二
* */
@Test
public void test02(){
//创建一个Excel文档
String fileName="user2.xlsx";
//根据User模版构造数据
List list=new ArrayList<>();
User user=new User(1,"小明","男",12000.12,new Date());
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
User user1=new User(2,"小米","男",12000.12,new
Date());
User user2=new User(3,"小红","男",12000.12,new
Date());
User user3=new User(4,"小张","男",12000.12,new
Date());
list.add(user);
list.add(user1);
list.add(user2);
list.add(user3);
ExcelWriter build = EasyExcel.write(fileName,
User.class).build();
//创建sheet对象
WriteSheet writeSheet = EasyExcel.writerSheet("用户信
息二").build();
build.write(list, writeSheet);
build.finish();
}
//排除某些字段
@Test
public void test03(){
String fileName="user3.xlsx";
//根据User模版构造数据
List list=new ArrayList<>();
User user=new User(1,"小明","男",12000.12,new Date());
User user1=new User(2,"小米","男",12000.12,new
Date());
User user2=new User(3,"小红","男",12000.12,new
Date());
User user3=new User(4,"小张","男",12000.12,new
Date());
list.add(user);
list.add(user1);
list.add(user2);
list.add(user3);
//排除某些字段不写入
Set set=new HashSet<>();
set.add("salary");
set.add("date");
EasyExcel.write(fileName,User.class).excludeColumnFiledNames
(set).sheet("用户信息三").doWrite(list);
}
/*
* 指定某些字段写入到Excel表格中
* */
@Test
public void test04(){
String fileName="user4.xlsx";
//根据User模版构造数据
List list=new ArrayList<>();
User user=new User(1,"小明","男",12000.12,new Date());
User user1=new User(2,"小米","男",12000.12,new
Date());
User user2=new User(3,"小红","男",12000.12,new
Date());
User user3=new User(4,"小张","男",12000.12,new
Date());
list.add(user);
list.add(user1);
list.add(user2);
list.add(user3);
//指定写入哪些字段到Excel表格中
Set set=new HashSet<>();
set.add("salary");
set.add("date");
EasyExcel.write(fileName,User.class).includeColumnFiledNames
(set).sheet("用户信息三").doWrite(list);
}
}
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
3.2 复杂头数据写入
写Excel的Java对象类型
@ExcelProperty({"值一","值二"}) : 如果每个@ExcelProperty注解上的值一
都相同是
如果不相同是:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1
2
3
4
5
/*
* 构建复杂头信息数据的类
* */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ComplexHeadUser {
//
@ExcelProperty({"用户主题1","用户编号"})
private Integer userId;
@ExcelProperty({"用户主题1","用户姓名"})
private String userName;
@ExcelProperty({"用户主题1","用户日期"})
private Date hireDate;
}
/*
* 复杂头数据的编写
* */
@Test
public void test01() {
6
7
8
9
10
11
12
13
14
15
String fileName = "users5.xlsx";
List list=new ArrayList<>();
ComplexHeadUser user=new ComplexHeadUser(1001,"小
米",new Date());
ComplexHeadUser user1=new ComplexHeadUser(1002,"小
米",new Date());
ComplexHeadUser user2=new ComplexHeadUser(1003,"小
米",new Date());
list.add(user);
list.add(user1);
list.add(user2);
EasyExcel.write(fileName,ComplexHeadUser.class).sheet("用户信
息").doWrite(list);
}
3.3 重复写到Excel的同一个sheet中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/*
* 重复写到Excel的同一个sheet标签中
* */
@Test
public void test02() {
String fileName = "users6.xlsx";
List list=new ArrayList<>();
ComplexHeadUser user=new ComplexHeadUser(1001,"小
米",new Date());
ComplexHeadUser user1=new ComplexHeadUser(1002,"小
米",new Date());
ComplexHeadUser user2=new ComplexHeadUser(1003,"小
米",new Date());
list.add(user);
list.add(user1);
list.add(user2);
//重复写
//创建ExcelWriter
ExcelWriter excelWriter = EasyExcel.write(fileName,
ComplexHeadUser.class).build();
//创建WriteSheet
WriteSheet writeSheet = EasyExcel.writerSheet("用户信息
6").build();
21
22
23
24
25
26
27
28
29
30
for (int i = 0; i <5 ; i++) {
excelWriter.write(list,writeSheet);
}
//关闭
excelWriter.finish();
}
3.4 重复写到Excel的不同Sheet中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/*
* 重复写到Excel的不同sheet标签中
* */
@Test
public void test03() {
String fileName = "users7.xlsx";
List list=new ArrayList<>();
ComplexHeadUser user=new ComplexHeadUser(1001,"小
米",new Date());
ComplexHeadUser user1=new ComplexHeadUser(1002,"小
米",new Date());
ComplexHeadUser user2=new ComplexHeadUser(1003,"小
米",new Date());
list.add(user);
list.add(user1);
list.add(user2);
//重复写
//创建ExcelWriter
ExcelWriter excelWriter = EasyExcel.write(fileName,
ComplexHeadUser.class).build();
for (int i = 0; i <5 ; i++) {
WriteSheet writeSheet = EasyExcel.writerSheet("用
户信息" + i).build();
excelWriter.write(list,writeSheet);
}
excelWriter.finish();
}