- 注:file.download是自己封装的一个js,前期编写没有注意到,这里可以改成Blob写法。
- 前端
import file from "@utils/file";
export(query){
file.download({
url: '/xxx/xxx/exportExcel',
method: 'post',
data: query
})
}
- 后端
实体类
@Data
//忽略不加@ExcelProperty的字段进行输出
@ExcelIgnoreUnannotated
public class Student {
@ExcelProperty(value = "姓名", index = 0)
private String name;
@ExcelProperty(value = "年龄", index = 1)
private Integer age;
@ExcelProperty(value = "分数", index = 2)
private Integer score;
//忽略字段
@ExcelIgnore
private String sex;
}
示例
@PostMapping("/exportExcel")
public void export(HttpServletResponse response, @RequestBody Student student){
//获取数据
List<Student> studentList = studentDao.findByWhere(student);
try{
response.setCharacterEncoding("UTF-8");
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition","attachment;filename="+URLEncoder.encode("学生表.xls","utf-8"));
//输出excel
EasyExcel
.write(response.getOutputStream())
.excelType(ExcelTypeEnum.XLSX)
.head(Student.class)
.autoCloseStream(true)
.sheet("成绩单")
.doWrite(studentList);
}catch (IOException e){
e.printStackTrace();
}
}
- 样式
- 通过注解
@Data
@ContentRowHeight(30)
@HeadRowHeight(40)
@ExcelIgnoreUnannotated
public class Student {
@ColumnWith(19)
@ExcelProperty(value = "姓名", index = 0)
private String name;
@ExcelProperty(value = "年龄", index = 1)
private Integer age;
@ExcelProperty(value = "分数", index = 2)
private Integer score;
private String sex;
}
- 通过策略
//excel内容
WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
//细实线
contentWriteCellStyle.setBorderLeft(BorderStyle.THIN);
contentWriteCellStyle.setBorderTop(BorderStyle.THIN);
contentWriteCellStyle.setBorderRight(BorderStyle.THIN);
contentWriteCellStyle.setBorderBottom(BorderStyle.THIN);
//内容居中
contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
contentWriteCellStyle.setHorizontalAlignment(VerticalAlignment.CENTER);
contentWriteCellStyle.setWrapped(true);
//HeadWriteCellStyle表头设置 contentWriteCellStyle内容设置
.registerWriteHandler(new HorizontalCellStyleStrategy(HeadWriteCellStyle,contentWriteCellStyle))