springboot 利用html模版导出word

devtools/2025/1/20 20:14:19/
htmledit_views">

1.maven配置

        <dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.32</version></dependency>

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<String, String> data = new HashMap<>();data.put("content", "我是内容");data.put("testHtml","<table class='MsoTableGrid' border='1'>" +"    <tr style='height:14.7000pt;'>" +"        <td width='128' valign='center'>'" +"              测试httml'" +"        </td>'" +"        <td width='128' valign='center'>'" +"           <img src = '如果有图片这里放:图片的base64'/>" +"        </td>'" +"    </tr>'" +"</table>");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内容

<p class="MsoNormal" align="center" style="text-align:center;"><span style="mso-spacerun:'yes';font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;"><font face="宋体">施工日志-${content}</font></span><span style="mso-spacerun:'yes';font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span>
</p>
${testHtml}

http://www.ppmy.cn/devtools/152173.html

相关文章

ingress-nginx代理tcp使其能外部访问mysql

一、helm部署mysql主从复制 helm repo add bitnami https://charts.bitnami.com/bitnami helm repo updatehelm pull bitnami/mysql 解压后编辑values.yaml文件&#xff0c;修改如下&#xff08;storageclass已设置默认类&#xff09; 117 ## param architecture MySQL archit…

mysql绿色版卸载详细教程

本文主要讲解如何卸载mysql绿色版&#xff1a; 用管理员权限打开cmd窗口&#xff0c;切换到mysql安装目录的bin目录下&#xff0c;如下图&#xff0c;执行命令【net stop mysql】以停止mysql服务。 除了上述命令行停止mysql服务的方法&#xff0c;也可以在服务界面通过右键菜单…

【机器学习:二十七、决策树集合】

1. 决策树集合的概述 决策树集合是一种基于多个决策树模型集成的机器学习方法&#xff0c;通过组合多个弱学习器&#xff08;决策树&#xff09;形成一个强学习器&#xff0c;显著提升预测性能和泛化能力。 核心思想 集成学习的核心是通过结合多个模型的优点&#xff0c;降低单…

第十二章:算法与程序设计

文章目录&#xff1a; 一&#xff1a;基本概念 1.算法与程序 1.1 算法 1.2 程序 2.编译预处理 3.面向对象技术 4.程序设计方法 5.SOP标志作业流程 6.工具 6.1 自然语言 6.2 流程图 6.3 N/S图 6.4 伪代码 6.5 计算机语言 二&#xff1a;程序设计 基础 1.常数 …

C语言之装甲车库车辆动态监控辅助记录系统

&#x1f31f; 嗨&#xff0c;我是LucianaiB&#xff01; &#x1f30d; 总有人间一两风&#xff0c;填我十万八千梦。 &#x1f680; 路漫漫其修远兮&#xff0c;吾将上下而求索。 C语言之装甲车库车辆动态监控辅助记录系统 目录 一、前言 1.1 &#xff08;一&#xff09;…

03.选择排序

一、题目思路 选择排序是一种简单直观的排序算法。它的工作原理是&#xff1a;首先在未排序序列中找到最小&#xff08;或最大&#xff09;元素&#xff0c;存放到排序序列的起始位置&#xff0c;然后&#xff0c;再从剩余未排序元素中继续寻找最小&#xff08;或最大&#xff…

计算机毕业设计Python+卷积神经网络租房推荐系统 租房大屏可视化 租房爬虫 hadoop spark 58同城租房爬虫 房源推荐系统

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

C#如何获取电脑中的端口号和硬件信息

我们经常在使用一个串口软件的时候&#xff0c;发现软件中的端口号并不是普通的COM1&#xff0c;而是带有硬件信息的。 那么如果我们使用C#编写软件时候&#xff0c;如何获取到串口的硬件信息呢&#xff1f; 思路就是通过读取设备管理器里的条目来实现&#xff0c;我这里给大家…