问:首先需求是什么?
答:需要生成一个word文档,其中格式内容有固定模板文件参考
首先word文档中需要动态生成的文字字段通通换成${name}的格式,其中name对应 java中的字段,图片等本篇不涉及哈,百度一下也很多就是格式不同
接着另存为.xml格式
最后文档格式改为.ftl
至此模板文件已经构建完成。

  /*** 获取生成Word文档所需要的数据*/@PostMapping("/getWordData")@ResponseBodypublic CommonResult getWordDataT(ModelMap model,Long id,HttpServletResponse response) {Map<String,Object> dataMap = new HashMap<String, Object>();//Archive archive=archiveService.get(id).get();try {//编号dataMap.put("title", archive.getTitle());//日期dataMap.put("date", new SimpleDateFormat("yyyy年MM月dd日").format(new SimpleDateFormat("yyyy-MM-dd").parse("2018-09-19")));//附件张数dataMap.put("author", archive.getAuthor());//受款人dataMap.put("payee", "张三");//付款用途dataMap.put("use_of_payment", "test");//小写金额dataMap.put("lowercase_amount", "100");//Configuration 用于读取ftl文件Configuration configuration = new Configuration(new Version("2.3.0"));configuration.setDefaultEncoding("utf-8");/*** 以下是两种指定ftl文件所在目录路径的方式,注意这两种方式都是* 指定ftl文件所在目录的路径,而不是ftl文件的路径*///指定路径的第一种方式(根据某个类的相对路径指定)
//                configuration.setClassForTemplateLoading(this.getClass(), "");//指定路径的第二种方式,我的路径是C:/a.ftl E:/wordconfiguration.setDirectoryForTemplateLoading(new File("E:/word/"));//输出文档路径及名称File outFile = new File("E:/word/"+archive.getTitle()+"申报单.doc");//以utf-8的编码读取ftl文件Template template = configuration.getTemplate("23.ftl", "utf-8");Writer out = new BufferedWriter(new OutputStreamWriter(new                  FileOutputStream(outFile), "utf-8"), 10240);template.process(dataMap, out);out.close();} catch (Exception e) {e.printStackTrace();}try {//这边是生成word 文档后直接找开Runtime.getRuntime().exec("cmd /c start "+"E:/word/"+archive.getTitle()+"申报单.doc");} catch (IOException e) {// TODO 自动生成的 catch 块e.printStackTrace();}return new CommonResult().Success();}

其中.tfl文档生成时会产生一个问题,基本上都是因为复制${}表达式的问题,建议先测试一个字段是否能正确生成,所有的 ${}都手动输入比较好。

     freemarker.core.ParseException: Encountered "<" at line 3, column 28888 in test.ftl.  Was expecting one of:  <STRING_LITERAL> ...  <RAW_STRING> ...  "false" ...  "true" ...  <INTEGER> ...  <DECIMAL> ...  "." ...  "+" ...  "-" ...  "!" ...  "[" ...  "(" ...

Freemarker使用xml生成word模板相关推荐

  1. Freemarker使用xml写word模板-遇到的坑

    Freemarker使用xml写word模板-遇到的坑 模板的带有表格时,所有单元格的大小都需要修改为统一数据,否则错版 <w:tblGrid><w:gridCol w:w=&quo ...

  2. java 使用xml生成word_Java+freemaker+xml生成word模板

    date: 2017-04-15 21:34:56 Java利用freemaker包来操作生成word模板. 一个头疼的问题,了解了下xml. Java也是在学习的路上. 需求 自动化生成word报告 ...

  3. freemarker生成word模板

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

  4. 基于freemarker ,xdocreport生成word,pdf

    解决freemarkder 处理 docx 后生成的是xml问题 xdocreport docx 转pdf title: 基于freemarker ,xdocreport生成word,pdf cate ...

  5. Java实现freemarker生成word模板

    博主在做的是将word源文件中的内容读取出来,然后按照固定的格式输出,当然,源文件有大量,所以编写了程序来批量自动生成目标文件. 本文要介绍的就是如何生成模板,并将从源文件截取的内容填充到模板文件(即 ...

  6. 用freemarker生成word模板

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

  7. freemaker生成word模板的各种坑,包含word打不开、批量添加图片、图片变形等问题总结

    最近在使用freemaker做一个word模板,里面包含大量表格.截图.超链接等数据.历时一周多,遇到很多坑,现在想想都后怕,现在简单总结一下,希望给以后的小伙伴提供帮助,少走弯路! 坑一:word打 ...

  8. python自动化高效办公第二期,带你项目实战【一】{excel数据处理、批量化生成word模板、pdf和ppt等自动化操作}

    相关文章和数据源: Python自动化办公--Pandas玩转Excel[一] Python自动化办公--Pandas玩转Excel数据分析[二] Python自动化办公--Pandas玩转Excel ...

  9. 小程序腾讯云云开发实现生成word模板

    场景:合同模板.协议模板自动填充内容,并生成word 使用到的库 docx-templates 将docx模板填充内容 dayjs 保存文件时生成时间目录 string-random 随机文件名 原理 ...

  10. php将文章生成word,用php生成word模板

    PHP表单按word的模板输出 PHP 生成 word 文档,可以考虑以下两类办法:1. 利用 windows 系统提供的 com组件. 这种方法的原理,是使用 php 的调用 com 组件功能函数, ...

最新文章

  1. Window10 64位,通过Python读取.mif, shp文件
  2. Dell服务器Ubuntu 18.04 双显卡(2080ti)搭建深度学习环境(CUDA 10.1/cuDNN 7.6/Tensorflow 1.14).md...
  3. 一个游戏美术写给策划的快速入门(二)
  4. C#嵌套任务和子任务
  5. navicat创建计算列_Tableau Part 9 计算字段amp;粒度聚合比率amp;表计算
  6. 详谈asp生成静态页方法
  7. 前端学习(1745):前端调试值之查看元素最终样式
  8. java程序员常用查询和学习的网站
  9. c#查看远程文件是否存在
  10. 《战争论》第四篇《战斗》的主要内容
  11. 如何使用网线连接mac登陆锐捷使用校园网——针对华南农业学子
  12. 现美团架构师分享过去三年的面试感悟—Java程序员应该具备的技能
  13. 愿天下有情人都是失散多年的兄妹 (25 分)
  14. aptana手动配置python环境_Aptana Studio 3配置Python开发环境图文教程
  15. 红蜘蛛显示器测试软件,红蜘蛛5校色仪怎么用?显示器校色及测试色域和色彩精准度详细教程...
  16. PS如何快速完整的抠头发丝,请看详细的教程
  17. unity的九宫格切割
  18. office快捷键设置
  19. 生成固定的句子,句子中含有给定的多个关键词,python代码实现
  20. Nim 博弈游戏详解

热门文章

  1. 集装箱装柜计算机器在线,集装箱装柜数智能计算表
  2. 计算机应用专业毕业感言,大学毕业感言语句
  3. js自动生成手机扫描二维码就可以实现自动下载apk的二维码
  4. Windows 7 64位版本的内存错误导致蓝屏死机(Blue Screen to Death)
  5. 红米K40刷机导致基带丢失 基带未知 不读卡 没有串号 修复记录
  6. 酷狗音乐、QQ音乐、网易云音乐API
  7. css3动画 --- transform属性值:旋转rotate、扭曲skew、缩放scale和移动translate以及矩阵变形matrix
  8. 金属芯PCB中的贵族,热电分离铜基板(高导热380W)
  9. linux 多线程编程-互斥锁问题之tpp.c:63: __pthread_tpp_change_priority failed 问题解决
  10. C++multimap 003:冷血格斗场