mvn
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
</dependency>
impl
@Override
public XSSFWorkbook exportRorateInfo(HttpServletResponse response, RotateInfoExport exportRorateInfo) {
Assert.isTrue(ObjectUtils.isNotEmpty(exportRorateInfo.getYearId()),"年级id不能为空");
Integer timecount=0;
List<RotateInfoExport> mapList= rotateMapper.exportRorateInfo(exportRorateInfo.getYearId());
if(mapList.size() == 0){
throw new IllegalArgumentException("年级id有误");
}
List<Map<String,Object>> list = new ArrayList<>();
Map<String,Object> map = new LinkedHashMap<>();
map = new LinkedHashMap<>();
map.put("学生姓名", "学生\\时间");
//添加时间,取最长时间段
for(int i=0;i<mapList.size();i++) {
if (timecount < mapList.get(i).getData().size()) {
timecount = mapList.get(i).getData().size();
for (int j = 0; j < mapList.get(i).getData().size(); j++) {
map.put("时间" + j, mapList.get(i).getData().get(j).get("time"));
}
}
}
list.add(map);
for(int i=0;i<mapList.size();i++){
//添加科室列表
map = new LinkedHashMap<>();
map.put("学生姓名",mapList.get(i).getStudentName());
//for(int j=0;j<mapList.get(i).getData().size();j++){
for(int j=0;j<timecount;j++){
if(j<mapList.get(i).getData().size()) {
map.put("时间" + j, mapList.get(i).getData().get(j).get("department") != null ? mapList.get(i).getData().get(j).get("department") : "");
}
else {
map.put("时间" + j,"");
}
}
list.add(map);
}
if(list.size() == 0){
throw new IllegalArgumentException("导出失败");
}
// json 转 excel
try {
XSSFWorkbook xssfWorkbook = ExcelUtils.map_to_excel(response, list, exportRorateInfo.getYearName(), exportRorateInfo.getYearName() + "轮转排班");
return xssfWorkbook;
} catch (IOException e) {
e.printStackTrace();
throw new IllegalArgumentException("导出失败");
}
}
controller
@PostMapping("/export")
public void export(HttpServletResponse response,RotateInfoExport rotateInfoExport)
{
//增加前置判断有没有数据
HashMap<String,Object> object = SpringUtils.getBean(RedisCache.class).getCacheObject("arrange"+rotateInfoExport.getYearId());
Assert.isTrue(ObjectUtils.isNotEmpty(object),"没有数据不能导出");
XSSFWorkbook xssfWorkbook = rotateService.exportRorateInfo(response, rotateInfoExport);
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
try {
OutputStream os = response.getOutputStream();
xssfWorkbook.write(os);
os.flush();
os.close();
} catch (IOException e) {
e.printStackTrace();
throw new IllegalArgumentException("导出失败!");
}
}