Freemarker使用mht制作导出word模板

一、制作word导出模板时,我们使用官方的Office Word编辑样式,编辑好之后,另存为mhtml格式,这样我们就可以看到源代码了。注意:创建word文档时,使用doc后缀,docx与doc的操作不一样

二、导出mhtml文件后,我们可以用任意文本编辑器打开,当然别使用word打开,不然没有意义。word打开还是word文档。此时我们就可以看到类似这样的代码:

MIME-Version: 1.0 //版本号,不用管
Content-Type: multipart/related; boundary="----=_NextPart_01D71A83.BC861220"
This document is a Single File Web Page,
also known as a Web Archive file.
If you are seeing this message, your browser or editor doesn't support Web Archive files.
Please download a browser that supports Web Archive, such as Microsoft Internet Explorer.------=_NextPart_01D71A83.BC861220
//这边是提示,乱码的话可以拿去修改,但是----=_NextPart_01D71A83.BC861220值要使用你生成的值哦,不使用的话,暂时没测试Content-Location: file:///C:/D914DAE1/mettingSta.htm //指定文件在哪,是什么名字,路径可以不修改,但是文件名一定要跟你模板名一致,不然会导出数据存在,但是看不到数据,
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="utf-8" //设置编码格式为UTF-8//下方代码均为自主生成,不必修改
<html xmlns:v=3D"urn:schemas-microsoft-com:vml"xmlns:o=3D"urn:schemas-microsoft-com:office:office"xmlns:w=3D"urn:schemas-microsoft-com:office:word"xmlns:dt=3D"uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml"xmlns=3D"http://www.w3.org/TR/REC-html40"><head><meta http-equiv=3DContent-Type content=3D"text/html; charset=3Dx-utf-8"><meta name=3DProgId content=3DWord.Document><meta name=3DGenerator content=3D"Microsoft Word 15"><meta name=3DOriginator content=3D"Microsoft Word 15"><link rel=3DFile-List href=3D"mettingSta.files/filelist.xml"><!--[if gte mso 9]><xml><o:DocumentProperties><o:Author>1</o:Author><o:LastAuthor>jinrunkeji</o:LastAuthor><o:Revision>2</o:Revision><o:TotalTime>7</o:TotalTime><o:Created>2021-03-16T08:45:00Z</o:Created><o:LastSaved>2021-03-16T08:45:00Z</o:LastSaved><o:Pages>1</o:Pages><o:Words>89</o:Words><o:Characters>512</o:Characters><o:Lines>4</o:Lines><o:Paragraphs>1</o:Paragraphs><o:CharactersWithSpaces>600</o:CharactersWithSpaces><o:Version>16.00</o:Version></o:DocumentProperties><o:CustomDocumentProperties><o:KSOProductBuildVer dt:dt=3D"string">2052-11.1.0.10356</o:KSOProductBui=ldVer><o:ICV dt:dt=3D"string">2865940DDB3B4E3CA6A0A3A08EB88BC7</o:ICV></o:CustomDocumentProperties><o:OfficeDocumentSettings><o:AllowPNG/></o:OfficeDocumentSettings></xml><![endif]--><link rel=3DthemeData href=3D"mettingSta.files/themedata.thmx"><link rel=3DcolorSchemeMapping href=3D"mettingSta.files/colorschememapping.xml">

三、代码具体修改内容:

<body lang=3DZH-CN style=3D'tab-interval:21.0pt;word-wrap:break-word;text-justify-trim:punctuation'>
<div class=3DWordSection1 style=3D'layout-grid:15.6pt'><p class=3DMsoNormal align=3Dcenter style=3D'margin-bottom:12.0pt;text-align:center'>       <b style=3D'mso-bidi-font-weight:normal'><span style=3D'font-size:18.0pt;font-family:SimSun;color:green'>自定义内容</span></b><b style=3D'mso-bidi-font-weight:normal'><span lang=3DEN-US style=3D'font-size:14.0pt;font-family:SimSun'><o:p></o:p></span></b></p>
</div>
</body>
//此处代码为部分代码,其中可以像我们写html一样编写,具体样式的写法,可以自行百度官方查看
//常用标签:<table><tr><td></td></tr></table>样式可以自行设置,字体颜色,边框大小,页边距等等。

四、配合Java使用:

<body lang=3DZH-CN style=3D'tab-interval:21.0pt;word-wrap:break-word;text-justify-trim:punctuation'>
<div class=3DWordSection1 style=3D'layout-grid:15.6pt'>
<#list testResource as tr> //使用Freemarker的定义方式,<p class=3DMsoNormal align=3Dcenter style=3D'margin-bottom:12.0pt;text-align:center'>        <b style=3D'mso-bidi-font-weight:normal'><span style=3D'font-size:18.0pt;font-family:SimSun;color:green'>${tr.title}//此处直接取值即可</span></b><b style=3D'mso-bidi-font-weight:normal'><span lang=3DEN-US style=3D'font-size:14.0pt;font-family:SimSun'><o:p></o:p></span></b></p>
</#list>//当然别忘了结尾哦,table的写法与之相同,具体怎么操作,可以按照自身需求写
</div>
</body>

五、总结

A:为什么我们使用这样的方式来做word导出模板?

B:这样的方式可以使我们很快的做出符合要求的,且非常漂亮的模板。

A:这样写有什么注意的地方?

B:修改内容时,进来不懂样式的参数,只修改对应位置即可,样式会根据你的设定自主生成。

A:用这种方法有什么弊端?

B:额,唯一的缺点就是,导出源代码时,会出现换行符变成 ”=“ 需要手动删除一下,由于暂时还没有很好的解决办法,先手动吧,找到了,会即时更新。示例:

 <td width=3D58 style=3D'width:43.2pt;border-top:none;border-left:none;bor=der-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;mso-border-top=-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;mso-border=-bottom-alt:solid windowtext .5pt;mso-border-right-alt:solid windowtext .5pt;padding:0cm 5.9pt 0cm 5.9pt;height:20.55pt'><p class=3DMsoNormal align=3Dcenter style=3D'text-align:center'><span cla=ss=3DSpellE><bstyle=3D'mso-bidi-font-weight:normal'><span lang=3DEN-US style=3D'font-si=ze:9.0pt;font-family:SimSun'>${totalMeeting}</span></b></span><b style=3D'mso-bidi-fo=nt-weight:normal'><span lang=3DEN-US style=3D'font-size:9.0pt;font-family:SimSun'><=
o:p></o:p></span></b></p></td>//导出,不加修改的源代码

无时无刻不在努力,但是总是离成功差一点点,别着急,稳住,我们能赢

Freemarker使用mht制作导出word模板相关推荐

  1. SpringBoot导出word模板并动态渲染数据

    导出word模板并动态渲染数据 一.需求介绍 背景:需要导出word模板的时候,有些数据是动态或者图片等不确定因素的时候.根据需求定制好的模板要求填充数据,那么这个时候就需要进行根据word模板进行动 ...

  2. java 生成证书图片_java生成自定义证书图片1 - 制作证书word模板

    最近做项目遇到一个需求,生成指定数据的证书图片(比如毕业证,在空的模板中输入自定义的姓名.日期等信息),尝试了许多方法,最终完美地实现了这个需求. 以下内容为制作证书图片的第一步,制作证书word模板 ...

  3. 怎么制作简历word模板?

    在面试前我们会向招聘企业公司投递个人简历,企业也会通过你的个人简历大概的了解到求职者的一些基本情况信息,然后通过筛选进行面试,在这个获得面试机会的过程中,简历的制作非常重要. 怎么制作简历word模板 ...

  4. poi导出word模板

    **poi导出word模板段落处理 流程: 1:读取文档:` //获取docx解析对象 XWPFDocument document = new XWPFDocument(POIXMLDocument. ...

  5. Freemarker模板引擎:使用HashMap数据形式,导出word模板

    编写:HorinJsor 文章目录 一.Freemarker是什么? 二.Word模板编写 1.导出为xml格式文档 在这里插入图片描述 2.使用HBuilderX重排格式 3.基本模板语法 三.代码 ...

  6. springboot+freemarker实现导出word模板

    freemarker FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子邮件.配置文件.源代码等)的通用工具. 它不是面向最终用户的,而是一个 ...

  7. Freemarker + xml 实现Java导出word

    前言 最近做了一个调查问卷导出的功能,需求是将维护的题目,答案,导出成word,参考了几种方案之后,选择功能强大的freemarker+固定格式之后的wordxml实现导出功能.导出word的代码是可 ...

  8. 【Java】poi-tl实现导出Word模板并动态渲染数据

    文章目录 前言 优点 缺点 使用 引入依赖 渲染普通占位符 表格渲染 前言 最近做项目的时候会遇到要求要导出以docx格式结尾的报告文件,于是我就在思考有没有一个比较好用的第三方类库能解决在word上 ...

  9. java修改导出模板,java模板导出word模板 java根据word模板导出

    java 调用word模板实现循环套打生成word文档 首先我用的技术是 poi 这是代码,一个工具类得调用 public class WordUtil { /** * 基于模板文件导出 word 文 ...

最新文章

  1. 自动写作、RNN基本原理以及LSTM的基本原理
  2. 智慧健康,协同发展:清华大学携手天津市共同探索健康医疗大数据
  3. 在pycharm中升级pip失败和pip安装pytorch torchvision opencv
  4. Spring-学习笔记06【Spring的新注解】
  5. C++ #define详解
  6. PHP中全局变量的使用global和$GLOBALS[]
  7. php base64安全吗,php base64
  8. 菜鸟学习笔记:Java基础篇5(抽象类与接口、回调函数、内部类)
  9. Android模拟器图形绘原理(二十二)
  10. anywhere随启随用的静态文件服务器
  11. QCIF CIF 2CIF 4CIF 普及
  12. Github每日精选(第17期):Django下的内容管理系统wagtail
  13. ORACLE和SQL SERVER数据交换的二进制问题
  14. linux 查看ip
  15. 浏览器网页缩放对页面的影响
  16. 抖音小店入驻条件及费用最新版,2022抖音开店,商家入门指南
  17. Oracle入门学习笔记及练习
  18. 022kuo_zhan_guan_li_qi
  19. react中实现取色器的效果React Color
  20. ajax一般格式,ajax标准格式

热门文章

  1. 数字IC设计入门(3)初识电路图
  2. 系统错误null是什么意思_为什么NULL是错误的?
  3. 2022.11.10 英语背诵
  4. 人生各个年龄段的称谓
  5. 微信公众号渠道二维码怎么生成?可以进行用户分组吗?
  6. [附源码]Nodejs计算机毕业设计汽车维修服务系统Express(程序+LW)
  7. php四则运算出题器
  8. Python多继承mro
  9. 怎么用单片机做一个比较有创新的东西?
  10. 弘扬中华传统文化 讲好中国故事