public void fillExcel(HttpServletResponse response) throws IOException {
ServletOutputStream out = response.getOutputStream();
response.setContentType("multipart/form-data");
response.setCharacterEncoding("UTF-8");
//文件名字
String fileName = "demo.xlsx";
response.setHeader("Content-disposition", "attachment;filename=" +fileName);
//文件模板输入流
InputStream inputStream = new ClassPathResource("templates/demo.xlsx").getInputStream();
//标题数据
FillTitle fillTitle = new FillTitle();
fillTitle.setTitleDate(new Date());
//列表数据
List<FillData> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
FillData fillData = new FillData();
fillData.setName("张三");
fillData.setNumber(5.2);
list.add(fillData);
}
ExcelWriter writer = EasyExcel.write(out).withTemplate(inputStream).build();
WriteSheet sheet = EasyExcel.writerSheet(0).build();
//填充列表开启自动换行,自动换行表示每次写入一条list数据是都会重新生成一行空行,此选项默认是关闭的,需要提前设置为true
FillConfig fillConfig = FillConfig.builder().forceNewRow(true).build();
//填充标题
writer.fill(fillTitle,sheet);
//填充数据
writer.fill(list,fillConfig,sheet);
//填充完成
writer.finish();
out.flush();
}
标题实体类,数据实体类
@Data
public class FillData {
private String name;
private double number;
private Date date;
}
@Data
public class FillTitle {
private Date titleDate;
}
pom依赖
<!--EasyExcel-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.1.1</version>
</dependency>
模板文件位置
模板内容
结果展示