InputStream stream = ResourceUtil.getStream("template\模板.xlsx");
File file = FileUtil.writeFromStream(stream, new File("模板.xlsx"));
//获取业务数据
DTO dto = new DTO();
//封装数据
Map<Object,Object> map = new HashMap<Object,Object>();
map.put("data",dto);
//填充数据
Workbook wb = this.getWorkbookByTpl(file, map);
//导出填充好的数据
this.renderExcel(wb,"模板.xlsx");
//删除缓存文件
file.delete();
//填充数据
public Workbook getWorkbookByTpl(File file, Map<Object,Object> data) {
Workbook wb = null;
try(FileInputStream in = new FileInputStream(file)){
XLSTransformer transformer = new XLSTransformer();
wb = transformer.transformXLS(in, data);
}catch (Exception e) {
LOGGER.error("{}", e);
}
return wb;
}
//导出填充好的数据
public void renderExcel(Workbook wb, String fileName) {
/*if (fileName == null || "".equals(fileName)) {
fileName = tplName.substring(tplName.lastIndexOf("/") + 1);
}*/
try {
fileName = new String(fileName.getBytes("gbk"),"ISO-8859-1");
HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
response.reset();
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setHeader("Content-Disposition","attachment;filename=""+ fileName + """);
OutputStream os = response.getOutputStream();
wb.write(os);
os.flush();
os.close();
} catch (IOException e) {
LOGGER.error("{}", e);
}
}
注意点: 手动处理
//pom引用