博主在做的是将word源文件中的内容读取出来,然后按照固定的格式输出,当然,源文件有大量,所以编写了程序来批量自动生成目标文件。

本文要介绍的就是如何生成模板,并将从源文件截取的内容填充到模板文件(即生成目标文件)的过程,读取源文件内容的方法请阅读博主另一篇文章《Java实现poi方式读取word文件内容》。

1.准备工作

jar包----------freemarker.jar,网上都可以下载,找不到的朋友可以联系我。

word模板文件,博主准备的模板如下图:

2.制作模板

2.1在需要自动填充文字的位置,做变量标记(${变量名},如${name})。

博主测试所做的标记如下图,为省事年月日就不填了,举例即可。

2.2将文档以xml格式保存,word另存为,有保存为xml格式的,我就不截图了。

2.3将刚才的xml扩展名更改为ftl,比如“test.xml”更改为“test.ftl”。

2.4用编辑器打开.ftl文件,博主用的是Dreamweaver,打开里面乱七八糟一堆。。此时不要急,百度搜索“xml文件格式化”,利用在线工具即可,选中.ftl中所有内容,将内容格式化后,再复制到编辑器新建的文件中,注意原来的文件不要关闭,格式化内容只是为了方便检查内容是否有错误。

那么我们要检查什么呢?看下图:

我们在模板文件中编辑的变量名称,被错误地分开了,这种情况下,将源文件(就是乱七八糟一堆的那个文件)里面,我上图中标蓝的部分删除,让变量名称正常,检查完所有的变量名称无误后保存文件,模板文件到此就制作完成了。

3.将内容填充到模板中

3.1.Map集合

public Map<String, String> StringtoMap(String buffer){Map<String,String> dataMap = new HashMap<>();dataMap.put("shName", "新一");dataMap.put("class", "二(3)");dataMap.put("group", "3");dataMap.put("name", "王小二");return dataMap;}

请务必保证集合中的key键与模板中设置的变量名称一致,如shName与${shName}中的名称一致。

3.2.源代码

package com.freemarker.test;import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateExceptionHandler;public class testFreemarker {private Configuration configure = null;public testFreemarker(){configure = new Configuration();configure.setDefaultEncoding("utf-8");}/** * 根据Doc模板生成word文件 * @param dataMap Map 需要填入模板的数据 * @param fileName 模板文件名称 如test.ftl* @param savePath 保存路径 */  public void createDoc(Map<String, String> dataMap, String fileName, String savePath){  try{  //加载需要装填的模板  Template template  = null;  //加载模板文件  configure.setClassForTemplateLoading(this.getClass(),"/"); //将模板文件直接复制到src目录下// configure.setDirectoryForTemplateLoading(new File("D:\\"));//模板文件在本地硬盘d//设置对象包装器  configure.setObjectWrapper(new DefaultObjectWrapper());  //设置异常处理器  configure.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);  //定义Template对象,注意模板类型名字与downloadType要一致  template= configure.getTemplate(fileName);  //文件名调用的时候可更换//输出文档  File outFile = new File(savePath);  Writer out = null;  out= new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile),"utf-8"));    template.process(dataMap,out);  //outFile.delete();  if(out != null){out.close();}}catch (Exception e) {  e.printStackTrace();  }  }  public Map<String, String> StringtoMap(){Map<String,String> dataMap = new HashMap<>();dataMap.put("shName", "新一");dataMap.put("class", "二(3)");dataMap.put("group", "3");dataMap.put("name", "王小二");return dataMap;}public static void main(String[] args) {// TODO Auto-generated method stubMap<String,String> dataMap = new HashMap<>();testFreemarker tf = new testFreemarker();dataMap = tf.StringtoMap();tf.createDoc(dataMap, "test.ftl", "D:\\Object.doc");}}

3.3打开D盘根目录下的Object.doc,效果如下:

至此,生成目标文件完成。如果想要下划线长度不变并且自动在下划线上填充内容的话,将下划线用制表符的方式生成就可以了。

本文属于原创内容,资源来源于网络,如有雷同,情有可原,博主很诚实。如果帮了你的忙,请给博主点个赞,觉得废柴,留言提意见,谢谢大家阅读。博主联系方式在“写给读者的话”分类中,欢迎联系,共同进步。

Java实现freemarker生成word模板相关推荐

  1. freemarker生成word模板

    freemarker生成word模板 一.引入依赖 <dependency><groupId>org.freemarker</groupId><artifac ...

  2. Java使用freemarker生成word文档并转pdf文档

    Java使用freemarker生成word文档后转pdf 先来看看效果图 进入正题 项目需求: 为订单后生成对应的pdf文档,文档内包含图片. 方案一:使用freemarker和itext把html ...

  3. Java 用 Freemarker 生成 Word 时内容换行

    一.原因 试过各种换行符 '\r' '\n' '\r\n' '(char)11' 全部都不行!!! 原因是:Java 用 Freemarker 生成 Word 时的换行符被自动解析忽略掉 二.解决方法 ...

  4. Java使用freemarker生成word文件

    首先声明我的项目是一个web项目,生成的word文件直接通过response响应发送给前端.如果不是web项目的话可以像网上的其他教程一样将生成的word保存在本地. 要利用freemarker生成w ...

  5. Java通过freemarker生成word文档

    文档生成目录 摘要 项目预期效果 使用freemaker生成word文档并下载 一:导入所需要的maven依赖 二:根据word文档生成我们需要的ftl模板文件 三:将word需要的数据存入一个map ...

  6. java使用freemarker生成word

    一.前端生成base64编码 npm install echarts --save 到vue的main.js中加入: import echarts from 'echarts'Vue.prototyp ...

  7. java根据 freemarker 生成word文档包含图片和动态表格

    需求 根据提供的模板样式,生成相对应的word文档,之前可以用xdoc生成,但是目前这个需求 是需要动态生成excel表格,有的单元格需要隐藏不展示,所以这边利用freemarker标签解析, 根据数 ...

  8. 用freemarker生成word模板

    需求: 给文书统一生成一个搞头文件,文件内容基本是一样的. 用freemarker生成docx文档 一.生成一个docx结尾的word模板,然后把文档的后缀docx改成zip,zip里会有生成很多文件 ...

  9. Freemarker 生成word 模板文件

    2019独角兽企业重金招聘Python工程师标准>>> /***      * word 下载生成      * @param positionvo      * @return   ...

最新文章

  1. rfc6455 WebSockets
  2. kubernetes关键特性和概述
  3. 半导体量子芯片开发获重要进展
  4. ThreadPool的使用
  5. 将Ehcache添加到Openxava应用程序
  6. 50种方法巧妙优化你的SQLServer数据库(转)
  7. 前端拦截url参数xss攻击_闲庭信步聊前端 - 漫谈XSS
  8. 现在事业单位好不好考?
  9. java core 作者_java core dump分析实战
  10. 计算机辅助设计(湖南省首届“湘邮科技杯”大学生程序设计大赛试题)
  11. 质点系的角动量与角动量定理
  12. face_recognition移植至树莓派
  13. 安卓模拟器刷小米系统_小米安卓模拟器|小米手游模拟器下载 v1.0.0.8 电脑版_小皮网...
  14. h5 实现简单的png icon 换颜色效果
  15. mysql left用法
  16. 枚举Word表格AutoFormat样式
  17. 【LeetCode】回溯 N皇后(DFS、子集、组合问题)
  18. ZCU104开发板MIPI摄像头开发(详细介绍移植ZCU102example design)
  19. 电脑装机兼容性测试软件,四款产品内部兼容性测试
  20. 命令行给Linux安装中文,Linux下命令行安装TeamViewer

热门文章

  1. ibm邮件怎么撤回_如何快速有效的管理IBM i上电子邮件跟踪信息
  2. 磨削工具类毕业论文文献有哪些?
  3. react native在growth stack中的角色思考
  4. 计算机模拟在复杂系统工程研究中的应用,计算机模拟在材料研究中的应用.pdf...
  5. 机动应急指挥系统_便携式应急指挥系统
  6. [车联网安全自学篇] Android安全之检测APK中调试代码是否暴露敏感信息
  7. 东风鼎新动力系统科技有限公司PLM项目启动!
  8. 文件改名最有效的方法,将文件名称中错误的文字进行替换
  9. java JDBC使用简易教程
  10. WPF使用Fluent.Ribbon修改标题栏背景颜色