Java使用FreeMarker模版技术动态生成word实践

Java使用FreeMarker模版技术动态生成word实践

一、序言

在日常开发中,常常有动态word文件生成的需求,通过编制模版,然后动态修改word内容以组合成新的文件。报告单、请假单、发票页等都可以使用动态生成word来解决。

笔者总结归纳出通用技术要点,尽可能降低广大开发者的使用技术门槛。

二、制作与渲染模版

(一)总体流程

1、准备数据

通过查询数据库获取需要修改的数据,或者是调用远程API接口获得数据,数据准备完毕后,进入下一步。

2、制作word模版

新建并设计出期望效果的word文档样式,包含字体、字号、段落样式布局等,先做出一个静态的word文件。

3、制作freemark模版

在新建word模版的基础上,使用freemark语法,结合已经准备填充的数据结构,将需要动态变化的内容用变量表示。

用变量替换时常见的情形时对象属性和循环。

freemark模版制作完成后,保存为ftl后缀文件。

4、渲染字符串

将数据和freemark模版组合,并且将前期制作的变量占位符替换,形成最终的word文件

(二)编码实践

按照笔者提供的流程和SDK编码实践相对比较简单。

1、引入依赖

如下依赖包含封装的工具方法,大幅降低使用门槛。

xin.altitude.cms ucode-cms-word 1.5.6

2、编码

/* 模拟准备数据 */List data = TempUtils.readJsonList(“HumanDemo.json”, HumanDemo.class);/* 将数据填充到模版中并生成word文档 */DocUtils.fillWord(“templates/HumanDemo.ftl”, data);

从流程到编码实践比较简单。

到此为止,已经可以快速体验word生成技术了。

三、内容拓展

上述分析的word生成如果页面结构较为简单,实现起来难度不大,假如涉及到如下情形,实现起来就会增加不少难度。

增加的困难主要来源于页面布局复杂、使用各种组件控件多、多媒体资源的引入。解决方法仍然参考上述流程。

(一)复杂模版

1、多媒体资源布局

当模版中需求多媒体(图片)内容,并且数量动态变化,位置不固定时,实现难度较大。

2、复杂内容布局

当模版中包含文本,选择框,横向合并单元格、纵向合并单元格时,实现难度较大。

3、动态渲染表格

涉及到动态渲染合并单元格时,实现难度较大。

上述复杂模版制作,笔者均有实践。

(二)文件格式

对于word文件格式有两种,一种是.doc后缀文件,一种是.docx后缀文件,上述讨论属于前者,后者模版制作与生成比前者要复杂,将在后续的版本中提供API操作接口。

.docx后缀文件的word在转PDF方面兼容性比较好。

(三)使用建议

开发前,尽可能将模版布局确认,对于复杂页面结构修改需要增加较大投入

熟悉FreeMark语法、word文件结构将会对word模版开发受益

多使用、多练将有助于制作出漂亮的文档。

文章来自https://www.cnblogs.com/javazhishitupu/p/16373006.html

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
用户投稿
上一篇 2022年6月21日 12:11
下一篇 2022年6月21日 12:12

相关推荐

  • 我国首台130吨级重复使用液氧煤油补燃循环发动机试车成功

    新华社西安11月26日电记者26日从中国航天科技集团六院获悉,由该院自主研制的首台130吨级重复使用液氧煤油补燃循环发动机两次起动试车取得圆满成功。 该型发动机是瞄准我国新一代运载…

    2022年11月27日
  • 世界领先!我国已应用于新一代战机→

    本文转自【央视军事】; “3D打印技术在飞机上的应用 我们已达到规模化、工程化 处于世界领先位置” 如何运用3D打印设备 生产新一代战机的零部件? 规模化+工程化 3D打印件批量装…

    2022年11月27日
  • 短视频策划内容的3个要点(短视频策划内容怎么做)

    短视频在制作时,内容框架非常重要。如果直奔主题,然后结束,聚卓告诉你,这样的短视频已经过时了。现在的短视频需要框架的,但不是任何框架,它需要一种易于理解和消化的框架。而且,现在大多…

    2022年11月27日
  • 中国疫情为什么搞得那么紧张(为什么要搞疫情)

    有在关注国内本轮疫情的小伙伴应该注意到了,这几天国内疫情的情况还是比较严峻的,而各地也都在针对疫情实行严格的管控措施。那么,中国疫情为什么搞得那么紧张?对比国外,国内疫情的防控措施…

    2022年11月25日
  • 中国疫情为何突然严重了(大连疫情为何突然增加那么多)

    有在关注国内此次疫情的小伙伴应该注意到了,近期国内各地的疫情情况也都是比较严峻的。而对于进入十一月份后各地突然爆发的疫情,大家也都第一时间查询原因。中国疫情为何突然严重了?为什么国…

    2022年11月25日
  • 《羊了个羊》第二关怎么过11.25 羊了个羊11.25攻略

    羊了个羊的11月25日第二关的难度不高,那么11月25日的第二关是什么样的,有什么通关技巧呢?下面就让小编为大家分享一下羊了个羊第二关怎么过11.25攻略,一起来了解一下吧。 羊了…

    2022年11月25日
  • 客服的岗位职责怎么写(客服工作内容及职责)

    各位小伙伴们大家周一好,又到了每周一给大家分享干货内容的时候啦~ 本期来跟大家分享一下客服工作管理流程以及客服岗位里面的每项职能岗位的核心细则,也是干货满满推荐收藏~ 一.补偿流程…

    2022年11月25日
  • 小红书平台的一些机制及玩法详解(小红书玩法有哪些)

    关于小红书 一:小红书平台的一些机制 1. 笔记内容的CES评分机制 2. 笔记流量入口与长尾效应 二:小红书优质笔记的特点(分维度、类型分析) 1.笔记的本身架构组成 维度 2.…

    2022年11月25日
  • 什么是推广cpa一篇文章带你看懂CPA推广渠道

    CPA渠道 CPA指的是按照指定的行为结算,可以是搜索,可以是注册,可以是激活,可以是搜索下载激活,可以是绑卡,实名认证,可以是付费,可以是浏览等等。甲乙双方可以根据自己的情况来定…

    2022年11月25日
  • 博客营销的3大优势解析(博客营销怎么做)

    不知不觉已经写了24篇文章,加上这篇是第25篇了,都是自己这几年来用过的营销方法,如果遇到有些不懂的,我会咨询我的朋友和同事帮忙,尽量让每一篇有价值,哪怕是对大家有一点点帮助也行,…

    2022年11月25日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息