Java项目引入 Freemarker 插件自行完成。

步骤如下:

1、编写 Word 模板,并将模板中要用代码动态生成数据用 Freemarker 变量取代,即${变量名},如${username};

2、把该 word 文档 另存为 xml 文件(格式选择 Word 2003 XML,注意是另存为,不是改扩展名为 xml),然后再改扩展名为 ftl;

3、用编辑软件打开最后的 ftl 文件,并用查找功能查找第一步中定义的变量名,如:username,

就会发现 Word 软件在将 Word 转为 xml 过程中,在${username}之前插入了很过多余的字符(通常是 Word 中带有的格式),将第一步中定义的所有变量名全部还原为${变量名} 的格式,即:删除${username} 插入的多余字符。这步特别重要,直接决定了后面能够正确将数据落到模板中。

如下图:${username}  之间被插入了很多的格式字符,所以需要将黄线部分的字符串删除。

4、执行代码,将模板中的变量用数据填充进去

importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.OutputStreamWriter;importjava.io.Writer;importjava.util.HashMap;importjava.util.Map;importfreemarker.template.Configuration;importfreemarker.template.Template;public classFreeMarkerUtils {public static voidmain(String[] args) {try{

Map dataMap = new HashMap();

dataMap.put("clinicName", "爱齿口腔(滨海门诊部)");

dataMap.put("username", "张三");

dataMap.put("phone", "23456789876");

dataMap.put("IDNo", "130803299911211789");

dataMap.put("gender", "男");

dataMap.put("birthday", "1998-11-21");

dataMap.put("RightUp", "右上1");

dataMap.put("LeftUp", "左上1");

dataMap.put("RightDown", "右下1");

dataMap.put("LeftDown", "左上1");

dataMap.put("opearationDate", "2019-11-01");

dataMap.put("amountDaXie", "壹佰伍拾元整");

dataMap.put("amount", "150.00");

dataMap.put("currentDate", "2019年11月01日");

dataMap.put("currentDate", "2019年11月01日");

Configuration configuration= newConfiguration();

configuration.setDefaultEncoding("utf-8");//指定模板路径的第二种方式,我的路径是D:/ 还有其他方式

configuration.setDirectoryForTemplateLoading(new File("C:/Users/user/Desktop"));//输出文档路径及名称

File outFile = new File("D:/test.doc");//以utf-8的编码读取ftl文件

Template t = configuration.getTemplate("6_种植牙手术意外投保单(4)-2003-3.ftl","utf-8");

Writer out= new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8"),10240);

t.process(dataMap, out);

out.close();

}catch(IOException e) {

e.printStackTrace();

}catch(Exception e) {

e.printStackTrace();

}

}

}

参考:

原文链接:

java生成word 框勾_Java 使用模板生成 Word 文件---基于 Freemarker 模板框架相关推荐

  1. java word模版填充_Java 数据填充到word模板中

    maven引用 com.deepoove poi-tl 1.6.0-beta1 javax javaee-api 7.0 org.apache.poi poi-ooxml 4.1.2 org.apac ...

  2. java类似word校验错字_Java 比较两个Word文档差异

    Java 比较两个Word文档差异 Java 比较两个Word文档差异 本文介绍使用Spire.Doc for Java的比较功能来比较两个相似Word文档的差异.需要使用的版本为3.8.8或者后续发 ...

  3. java 操作word中表格_Java 使用Spire.Cloud.Word给Word文档添加表格

    在编辑Word文档时,很多时候需要用到表格,以便能够清晰整洁地表达和归类数据.本文就将介绍如何使用Spire.Cloud.Word给Word文档添加表格.Spire.Cloud.Word提供了Tabl ...

  4. Spring发送基于freemarker模板的邮件

    在项目开发过程中,我们经常会遇到需要发送邮件的场景,比如:用户验证邮箱的时候,有活动通知或者提醒通知的时候--有些时候我们可能只需要发送一些简单文本内容即可,但是大多数情况下我们更希望邮件的内容是丰富 ...

  5. java 导出word 带格式_java 导出数据为word文档(保持模板格式)

    导出数据到具体的word文档里面,word有一定的格式,需要保持不变 这里使用freemarker来实现: ①:设计好word文档格式,需要用数据填充的地方用便于识别的长字符串替换  如  aaaaa ...

  6. java pdf 首行缩进_java使用iText生成pdf文档的对齐方式

    一.前言 在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超级连接显示或 ...

  7. java 限制文本框长度_java中限制文本框输入长度的显示(转载)

    我最近在网上看到一篇文章很不错,对于限制文本框输入长度的显示很方便 JAVA不像C#能够有maxLength这个属性对文本框的输入长度进行控制,但也是有办法实现相应的功能的. 写一个MyDocumen ...

  8. java下拉框选择_java中下拉框选项内容

    下拉框中的内容是数据库中表的内容,比如,""张三","李四"sql中supplier中第一列supplierSimpleName123321(这是两行 ...

  9. java随机安排座位表程序_java – 为长凳生成随机座位表的最有效算法?

    我正在为一位教师的家庭成员编写应用程序.她要求一个应用程序,允许她进入一群孩子,设定他们的惯用手,设置他们不能坐在旁边的人,指定每个工作台有多少个座位,然后为孩子们生成一个随机的布局,这样就没有了 – ...

最新文章

  1. F#中的异步和并行设计模式(三):代理
  2. 论文阅读:Multi-Scale Triplet CNN for Person Re-Identification
  3. 【原创】oracle的归档模式
  4. 社交重构、游戏革新,万物皆可元宇宙?这场大会给你讲清楚了|活动预告
  5. 面向对象的三大特征之一:继承
  6. 构建现代Web应用时究竟是选择传统web应用还是SPA
  7. BootstrapTable分页参数
  8. ie6中容器内浮动元素的border边框不完全显示的bug
  9. Java基础学习总结(95)——Java反射主要用来干什么?
  10. 团部培训笔记-设计模式-《2013-11-27 代理模式》
  11. 上传到服务器的图片访问的时候提示403 You don't have permission to access
  12. 【Altium Designer】PCB如何生成Gerber文件
  13. 百度地图api 刷新地图_百度地图VS高德地图,谁更胜一筹?
  14. 74ls20设计半加器_数字电子技术实验练习内容
  15. 翻书法记忆GRE词汇
  16. mysql 模糊查询 查询条件为多个
  17. Matlab图像处理(入门笔记)
  18. 离别的感受(转小百合)
  19. 设置 IDEA走easyconnect代理
  20. 物理机如何安装Linux centos7

热门文章

  1. h5支付不能打开支付宝 ios_IOS H5支付调起微信支付宝客户端问题总结
  2. [云炬python3玩转机器学习笔记] 1-3课程所使用的主要技术栈
  3. 云炬Android开发笔记 10主界面-首页UI与数据解析器开发(RecyclerView)
  4. 吴恩达《构建机器学习项目》精炼笔记(1)-- 机器学习策略(上)
  5. 将servlet数据传到html_Servlet详解(二)
  6. Qt修炼手册7_图形:用户自定义QGraphicsItem
  7. Delphi中的容器类
  8. FreeRTOS笔记2
  9. 解决 Visual Studio 2019 无法打开wpf设计器问题
  10. linux下载软件后环境变量配置(最详细的保姆教程)——怎么找到linux下文件的路径