java生成word 框勾_Java 使用模板生成 Word 文件---基于 Freemarker 模板框架
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 模板框架相关推荐
- 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 ...
- java类似word校验错字_Java 比较两个Word文档差异
Java 比较两个Word文档差异 Java 比较两个Word文档差异 本文介绍使用Spire.Doc for Java的比较功能来比较两个相似Word文档的差异.需要使用的版本为3.8.8或者后续发 ...
- java 操作word中表格_Java 使用Spire.Cloud.Word给Word文档添加表格
在编辑Word文档时,很多时候需要用到表格,以便能够清晰整洁地表达和归类数据.本文就将介绍如何使用Spire.Cloud.Word给Word文档添加表格.Spire.Cloud.Word提供了Tabl ...
- Spring发送基于freemarker模板的邮件
在项目开发过程中,我们经常会遇到需要发送邮件的场景,比如:用户验证邮箱的时候,有活动通知或者提醒通知的时候--有些时候我们可能只需要发送一些简单文本内容即可,但是大多数情况下我们更希望邮件的内容是丰富 ...
- java 导出word 带格式_java 导出数据为word文档(保持模板格式)
导出数据到具体的word文档里面,word有一定的格式,需要保持不变 这里使用freemarker来实现: ①:设计好word文档格式,需要用数据填充的地方用便于识别的长字符串替换 如 aaaaa ...
- java pdf 首行缩进_java使用iText生成pdf文档的对齐方式
一.前言 在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超级连接显示或 ...
- java 限制文本框长度_java中限制文本框输入长度的显示(转载)
我最近在网上看到一篇文章很不错,对于限制文本框输入长度的显示很方便 JAVA不像C#能够有maxLength这个属性对文本框的输入长度进行控制,但也是有办法实现相应的功能的. 写一个MyDocumen ...
- java下拉框选择_java中下拉框选项内容
下拉框中的内容是数据库中表的内容,比如,""张三","李四"sql中supplier中第一列supplierSimpleName123321(这是两行 ...
- java随机安排座位表程序_java – 为长凳生成随机座位表的最有效算法?
我正在为一位教师的家庭成员编写应用程序.她要求一个应用程序,允许她进入一群孩子,设定他们的惯用手,设置他们不能坐在旁边的人,指定每个工作台有多少个座位,然后为孩子们生成一个随机的布局,这样就没有了 – ...
最新文章
- F#中的异步和并行设计模式(三):代理
- 论文阅读:Multi-Scale Triplet CNN for Person Re-Identification
- 【原创】oracle的归档模式
- 社交重构、游戏革新,万物皆可元宇宙?这场大会给你讲清楚了|活动预告
- 面向对象的三大特征之一:继承
- 构建现代Web应用时究竟是选择传统web应用还是SPA
- BootstrapTable分页参数
- ie6中容器内浮动元素的border边框不完全显示的bug
- Java基础学习总结(95)——Java反射主要用来干什么?
- 团部培训笔记-设计模式-《2013-11-27 代理模式》
- 上传到服务器的图片访问的时候提示403 You don't have permission to access
- 【Altium Designer】PCB如何生成Gerber文件
- 百度地图api 刷新地图_百度地图VS高德地图,谁更胜一筹?
- 74ls20设计半加器_数字电子技术实验练习内容
- 翻书法记忆GRE词汇
- mysql 模糊查询 查询条件为多个
- Matlab图像处理(入门笔记)
- 离别的感受(转小百合)
- 设置 IDEA走easyconnect代理
- 物理机如何安装Linux centos7
热门文章
- h5支付不能打开支付宝 ios_IOS H5支付调起微信支付宝客户端问题总结
- [云炬python3玩转机器学习笔记] 1-3课程所使用的主要技术栈
- 云炬Android开发笔记 10主界面-首页UI与数据解析器开发(RecyclerView)
- 吴恩达《构建机器学习项目》精炼笔记(1)-- 机器学习策略(上)
- 将servlet数据传到html_Servlet详解(二)
- Qt修炼手册7_图形:用户自定义QGraphicsItem
- Delphi中的容器类
- FreeRTOS笔记2
- 解决 Visual Studio 2019 无法打开wpf设计器问题
- linux下载软件后环境变量配置(最详细的保姆教程)——怎么找到linux下文件的路径