springboot 利用html模版导出word

1.maven配置

        
            org.freemarker
            freemarker
            2.3.32
        

2.控制层业务代码

@GetMapping("/exportConstructionLogDocx")
@ApiOperation(value = "Ai施工日志导出docx")
public void exportConstructionLogDocx(HttpServletResponse response, @RequestParam(value = "date", required = false) String date) {
    String engId = "HeadUtil.getEngId()";
    try {
        rtAigcService.exportConstructionLogDocx(response, engId, date);
    } catch (Exception e) {
        log.error("Ai施工日志导出docx-异常:", e);
    }
}

3.业务层代码

        

private Configuration configuration = new Configuration(Configuration.VERSION_2_3_31);
@Override
public void exportConstructionLogDocx(HttpServletResponse response, String engId, String date) {

    ClassPathResource resource = new         ClassPathResource("/templates/constructionLog.ftl");
    try {
        File templatesFile = resource.getFile();
        configuration.setDirectoryForTemplateLoading(templatesFile.getParentFile());
        Template template = configuration.getTemplate(templatesFile.getName());
        Map data = new HashMap<>();
        data.put("content", "我是内容");

        data.put("testHtml","" +
                "    " +
                "        '" +
                "        '" +
                "    '" +
                "
'" + " 测试httml'" + " '" + " " + "
"); StringBuffer fileName = new StringBuffer(); fileName.append("施工日志-"); fileName.append(DateUtils.parseDateToStr(DateUtils.YYYYMMDDHHMMSS, new Date())); fileName.append(".docx"); String enc = "UTF-8"; response.setCharacterEncoding(enc); response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName.toString(), enc)); try (Writer writer = response.getWriter()) { template.process(data, writer); } } catch (Exception e) { log.error("施工日志-导出失败-异常:", e); throw new RuntimeException("施工日志导出失败"); } }

4.模版constructionLog.ftl内容

施工日志-${content}

${testHtml}

你可能感兴趣的:(spring,boot,html,word)