springboot使用easyExcel自定义excel格式
时间: 2023-12-10 13:39:09 浏览: 174
springboot + poi导出指定格式Excel模板
Spring Boot集成EasyExcel可以方便地实现Excel文件的读写。如果要自定义Excel文件的格式,可以通过EasyExcel提供的注解来实现。
首先,导入EasyExcel依赖:
```xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.6</version>
</dependency>
```
假设我们要导出一个学生信息列表,包括学生姓名、学号、年龄和性别,并且要求在表头中添加“导出时间”信息。那么可以定义一个Student实体类,并在需要导出的字段上添加@ExcelProperty注解,如下所示:
```java
public class Student {
@ExcelProperty(value = "姓名", index = 0)
private String name;
@ExcelProperty(value = "学号", index = 1)
private String studentNo;
@ExcelProperty(value = "年龄", index = 2)
private Integer age;
@ExcelProperty(value = "性别", index = 3)
private String gender;
// getter/setter省略
}
```
在导出Excel时,需要通过EasyExcel提供的ExcelWriter对象来写入数据。在写入数据之前,需要先创建一个WriteSheet对象,并通过WriteSheet对象的setHead方法来设置表头信息。
```java
public void exportStudents(HttpServletResponse response, List<Student> students) throws IOException {
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
String fileName = "students.xlsx";
response.setHeader("Content-disposition", "attachment;filename=" + fileName);
try (ServletOutputStream outputStream = response.getOutputStream()) {
ExcelWriter excelWriter = EasyExcel.write(outputStream).build();
WriteSheet writeSheet = EasyExcel.writerSheet("学生信息").build();
// 设置表头信息
List<List<String>> head = new ArrayList<>();
List<String> head0 = new ArrayList<>();
head0.add("导出时间:" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
head.add(head0);
writeSheet.setHead(head);
excelWriter.write(students, writeSheet);
excelWriter.finish();
}
}
```
在上述代码中,我们先创建了一个WriteSheet对象,并将其命名为“学生信息”。然后,通过创建一个二维List来设置表头信息,将第一行的单元格内容设置为“导出时间:当前时间”。最后,将这个表头信息设置到WriteSheet对象中。在写入数据时,ExcelWriter会根据注解信息自动将Student对象的属性值写入相应的单元格中。
需要注意的是,EasyExcel提供了很多其他的注解和配置项,可以根据实际需求进行使用和设置。例如,可以通过@ExcelIgnore注解来忽略某个属性;可以通过@ExcelProperty(index = 0, converter = LocalDateTimeConverter.class)注解来自定义属性值的转换器等。
阅读全文