Excel获取模板填充相关数据

93 阅读1分钟
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);
    }
}

注意点: 手动处理

image.png

//pom引用 image.png