客户端Controller
@RequestMapping(value = "/export", produces = MediaType.TEXT_HTML_VALUE)
public void exportOrgExcel(@RequestBody(required = false) OrganizationReqVo orgVo) {
try {
Response feignResponse = organizationFeignService.exportOrgExcel(orgVo);
@Cleanup InputStream inputStream = feignResponse.body().asInputStream();
@Cleanup ServletOutputStream outputStream = response.getOutputStream();
response.setContentType("application/vnd.ms-excel");
outputStream.write(IOUtils.toByteArray(inputStream));
} catch (IOException e) {
e.printStackTrace();
}
}
客户端Service
import feign.Response;
@RequestMapping(value = "/export")
Response exportOrgExcel(@RequestBody(required = false) OrganizationReqVo orgVo);
服务端Controller
@RequestMapping(value = "/export")
public void exportOrgExcel(@RequestBody(required = false) OrganizationReqVo vo) throws IOException {
PageInfo pageInfo = new PageInfo();
OrganizationBo bo = new OrganizationBo();
if (vo == null) {
pageInfo = new PageInfo();
} else {
pageInfo = vo.getPageInfo();
BeanUtils.copyProperties(vo, bo);
}
IPage<OrganizationBo> ipage = organizationService.selectPageList(pageInfo, bo);
List<OrganizationExportBo> eBoList = new ArrayList<>();
ipage.getRecords().forEach(entityBo -> {
OrganizationExportBo exportBo = new OrganizationExportBo();
BeanUtils.copyProperties(entityBo, exportBo);
eBoList.add(exportBo);
});
organizationService.exportToExcel(eBoList, response);
}
服务端Service
void exportToExcel(List<OrganizationExportBo> list, HttpServletResponse resp);
服务端ServiceImpl
@Override
public void exportToExcel(List<OrganizationExportBo> list, HttpServletResponse resp) {
ArrayList<OrganizationExportBo> rows = CollUtil.newArrayList(list);
HashMap<String, String> fieldMap = PoiUtil.getFieldMap(OrganizationExportBo.class);
@Cleanup ExcelWriter writer = ExcelUtil.getWriter();
fieldMap.entrySet().forEach(entry -> {
writer.addHeaderAlias(entry.getKey(), entry.getValue());
});
writer.write(rows, true);
resp.setContentType("application/vnd.ms-excel;charset=utf-8");
resp.setHeader("Content-Disposition", "attachment;filename=test.xls");
try {
@Cleanup ServletOutputStream out = resp.getOutputStream();
writer.flush(out, true);
} catch (IOException e) {
e.printStackTrace();
}
}
public static HashMap<String, String> getFieldMap(Class classz) {
Field[] fields = classz.getDeclaredFields();
Field field;
HashMap<String, String> map = new HashMap<>();
for (int i = 0; i < fields.length; i++) {
fields[i].setAccessible(true);
}
for (int i = 0; i < fields.length; i++) {
try {
field = classz.getDeclaredField(fields[i].getName());
TableField api = field.getAnnotation(TableField.class);
if (api != null) {
map.put(field.getName(), api.value());
}
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
return map;
}