测试类
//准备数据比例
UserVo userVo1= UserVo.builder().userName("cxk").id(1).sex(2).img("xx.img").build();
UserVo userVo2= UserVo.builder().userName("lbw").id(2).sex(1).img("xx").build();
UserVo userVo3= UserVo.builder().userName("xz").id(3).sex(2).build();
UserVo userVo4= UserVo.builder().userName("芜湖").id(4).sex(2).build();
UserVo userVo5= UserVo.builder().userName("起飞").id(5).sex(2).build();
UserVo userVo6= UserVo.builder().userName("kk").id(6).sex(2).build();
UserVo userVo7= UserVo.builder().userName("ex").id(7).sex(2).build();
ClassVo classOne= ClassVo.builder().classId(1).name("一班").build();
ClassVo classTwo= ClassVo.builder().classId(2).name("二班").build();
List<UserVo> a= Lists.newArrayList(userVo1, userVo2, userVo3);
List<UserVo> b= Lists.newArrayList(userVo4, userVo5, userVo6, userVo7);
classOne.setUserList(a);
classTwo.setUserList(b);
List<ClassVo> classVos=Lists.newArrayList(classOne, classTwo);
List<UserVo> userVos=Lists.newArrayList(userVo1, userVo2, userVo3, userVo4, userVo5);
//准备第一个sheet页,填充班级数据
ExportParams classParams = new ExportParams();
classParams.setSheetName("班级详情表");
Map<String, Object> classExportMap = new HashMap<>();
classExportMap.put("title",classParams);
classExportMap.put("data",classVos);
classExportMap.put("entity",ClassVo.class);
//准备第二个sheet页,填充学生数据
ExportParams studentParams = new ExportParams();
studentParams.setSheetName("学生详情表");
Map<String, Object> studentExportMap = new HashMap<>();
studentExportMap.put("title",classParams);
studentExportMap.put("data",userVos);
studentExportMap.put("entity",UserVo.class);
//将两个sheet变成一个集合
List<Map<String, Object>> sheetsList = new ArrayList<>();
sheetsList.add(classExportMap);
sheetsList.add(studentExportMap);
//导出
Workbook workbook = ExcelExportUtil.exportExcel(sheetsList, ExcelType.HSSF);
FileOutputStream fos = new FileOutputStream("班级详情.xls");
workbook.write(fos);
fos.close();
班级实体类
@Data
@Builder
public class ClassVo {
@Excel(name = "班级id",needMerge = true,width = 12)
private Integer classId;
@Excel(name = "班级名称",orderNum = "1",needMerge = true)
private String name;
@ExcelCollection(name = "学生",orderNum = "2")
private List<UserVo> userList;
}
学生实体类
@Data
@Builder
@AllArgsConstructor
public class UserVo {
@Excel(name="姓名",orderNum = "1")
private String userName;
@Excel(name = "id")
private Integer id;
@Excel(name = "性别",replace = {"男_1","女_2"},orderNum = "3")
private Integer sex;
@Excel(name = "头像" ,suffix = ".img")
private String img;
}
EasyPoi默认的导出格式时HSSF,导出后缀为.xls
如需导出XSSF格式的文件 ,需要将ExportParams对象中的type属性设置为ExcelType.XSSF,
导出的content-type修改为 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
(不加也可导出成功),多sheet则都需要设置
效果