- 先创建一个普通maven项目
- 在pom中引入xml相关依赖
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.7</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
- 创建实体类
实体类属性为Excel为默认字段名
注解@ExcelProperty()为导出的Excel中的表头
注解@ExcelIgnore 就会忽略这个字段,不会打印出来 @Data
public class ExcelStudentData {
@ExcelProperty("姓名")
private String name;
@ExcelProperty("生日")
private Date birthday;
@ExcelProperty("薪资")
private Double salary;
/**
* 忽略这个字段
*/
@ExcelIgnore
private String password;
}
- 测试
07版本与03版本写入方式略有不同
03版本的Excel一次写入最多65536行
写入前需要先创建excel文件夹 public class ExcelWriteTest {
/**
* 最简单的写
*/
@Test
public void simpleWrite07() {
String fileName = "d:/excel/01-simpleWrite-07.xlsx";
// 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
EasyExcel.write(fileName, ExcelStudentData.class).sheet("模板").doWrite(data());
}
@Test
public void simpleWrite03() {
String fileName = "d:/excel/01-simpleWrite-03.xls";
// 如果这里想使用03 则 传入excelType参数即可
EasyExcel.write(fileName, ExcelStudentData.class).excelType(ExcelTypeEnum.XLS).sheet("模板").doWrite(data());
}
private List<ExcelStudentData> data(){
List<ExcelStudentData> list = new ArrayList<>();
//算上标题,做多可写65536行
//超出:java.lang.IllegalArgumentException: Invalid row number (65536) outside allowable range (0..65535)
for (int i = 0; i < 65535; i++) {
ExcelStudentData data = new ExcelStudentData();
data.setName("Tom" + i);
data.setBirthday(new Date());
data.setSalary(12222.55);
data.setPassword("123"); //即使设置也不会被导出
list.add(data);
}
return list;
}
}
- 指定写入列
在@ExcelProperties注解中,为列配置index属性 - 自定义格式转换
比如日期:@DateTimeFormat("")
比如数值百分比:@NumberFormat("#.##%")