文章目录
- 1. EasyExcel 介绍
- 2. 导出
- 2.1 引入依赖
- 2.2 构建测试实体类
- 3. 设置单元格大小
1. EasyExcel 介绍
EasyExcel 官网介绍 传统操作Excel大多都是利用 Apach POI 进行操作的,但是 POI
框架并不完善,使用过程非常繁琐且有较多的缺陷:
动态操作Excel非常繁琐,对于新手来说,很难在短时间内上手;
读写时需要占用较大的内存,当数据量大时容易发生内存溢出问题(OOM); 基于上述原因,阿里开源出一款易上手,且比较节省内存的Excel操作框架:EasyExcel
注意:easyExcel底层使用POI实现的;
官网地址:https://www.yuque.com/easyexcel/doc/easyexcel
2. 导出
2.1 引入依赖
<!--引入easyexcel-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.0.4</version>
</dependency>
2.2 构建测试实体类
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class User implements Serializable {
@ExcelProperty(value = {"用户名"},index = 0)
private String userName;
@ExcelProperty(value = {"年龄"},index = 1)
private Integer age;
@ExcelProperty(value = {"地址"} ,index = 2)
private String address;
@ExcelProperty(value = {"生日"},index = 3)
//注意:日期格式注解由alibaba.excel提供
// @DateTimeFormat("yyyy-MM-dd HH:mm")
private Date birthday;
}
导出代码
public static void main(String[] args) {
//组装数据
ArrayList<User> users = new ArrayList<>();
for (int i = 0; i < 10; i++) {
User user = new User();
user.setAddress("西安" + i);
user.setUserName("张三" + i);
user.setBirthday(new Date());
user.setAge(10 + i);
users.add(user);
}
//不做任何注解处理时,表头名称与实体类属性名称一致
EasyExcel.write("D:\\用户.xlsx", User.class).sheet("用户信息").doWrite(users);
}
导出效果
3. 设置单元格大小
类上添加 如下注解
@HeadRowHeight(value = 35) // 表头行高
@ContentRowHeight(value = 25) // 内容行高
@ColumnWidth(value = 50) // 列宽
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@HeadRowHeight(value = 35) // 表头行高
@ContentRowHeight(value = 25) // 内容行高
@ColumnWidth(value = 50) // 列宽
public class User implements Serializable {
@ExcelProperty(value = {"用户名"},index = 0)
private String userName;
@ExcelProperty(value = {"年龄"},index = 1)
private Integer age;
@ExcelProperty(value = {"地址"} ,index = 2)
private String address;
@ExcelProperty(value = {"生日"},index = 3)
//注意:日期格式注解由alibaba.excel提供
// @DateTimeFormat("yyyy-MM-dd HH:mm")
private Date birthday;
}
效果如下: