freemarker 制作word文档docx案例
主要用于生成特定word文档,需要替换docx中的文字,书签,图片,动态表格等
本文以生成docx为例,doc文件目前有一些问题 例如图片或模板不好处理等,暂不考虑。
思路:
1)熟悉docx文件的结构
2)重新生成docx中的文件
3)替换docx中的文件
一、引入依赖
pom.xml 引入相关jar包
1.freemarker-2.3.28:处理xml或ftl模板的jar
2.hutool-all-5.5.7:主要一些工具类的jar
3.dom4j-1.6.1:XML解析使用的jar
4.aspose-words-15.8.0-jdk16:对word操作的jar,例如word转pdf,word书签操作
二、构造参数
1.针对生成的word文档中需要的数据构造对象与属性
例如以下word模板
开发人员根据具体模板构造参数,不过多介绍
2.代码书写
需要准备内容:模板目录,生成word文档目录,相关模板文件名称
例如:
document.xml.rels:实际上为xml文件,指定相关资源与图片地址的文件
document.xml:word文档内容文件
freemarker_template.docx:word模板文件
3.执行顺序
1)通过dom4j进行xml解析 重新生成document.xml.rels
2)通过Freemarker进行模板处理重新生成document.xml
3)通过java自带zip操作替换word模板中的document.xml.rels,document.xml,写入相应图片,并且重新压缩生成新的word文档
4)删除临时文件:上述过程会产生一些临时文件,操作完成后需要及时删除
三、准备模板
docx文件实际是压缩文件,将word模板docx用压缩程序打开,如下:
将word目录中的document.xml文件,word/_rels/document.xml.rels文件拷贝出来,可以用HBuildX进行编辑,HBuildX可以对xml文件进行格式化。
document.xml.rels:
一般删除该文件中引入的图片标签即可
document.xml:
该word文档内容文件,需要开发人员自己编辑其内容 通过${}指定对应参数,这里使用的是Freemarker的语法格式
一般语法:
!'' 表示为空时为'',以下都做了非空判断,不然程序执行时会报错
${myName!''}${(user.userName)!''}<#if ((user.type)!'')=='admin'>${(user.userName)!''} </#if><#if userList??><#list userList as user>${(user.userName)!''}</#list> </#if>
freemarker_template.docx:
这个文件是word模板文件,需要处理的是用压缩软件打开该文件后删除其中的图片,目录地址位于word/media/下,还需要处理的文件是[Content_Types].xml
一般添加以下内容即可(不添加时可能会提示错误):
<Default Extension="png" ContentType="image/png"/><Default Extension="jpg" ContentType="image/jpg"/><Default Extension="jpeg" ContentType="image/jpeg"/>
四、开始测试
具体测试请看demo
freemarker-demo: freemarker 制作word文档docx案例
freemarker 制作word文档docx案例相关推荐
- Java通过POI或Freemarker生成word文档,使用Jfreechart创建统计图表
最近做了一个使用Java生成统计分析报告word文档的功能,有提前制作好的word文档,其中共包含了普通文本变量,普通表格,动态表格.统计图表(柱状图.饼状图.折线图等),在此记录下POI和freem ...
- Java+freemarker 导出Word文档的实现(包括word for Mac 插入域的方法)-静态数据,动态表格list
1. 准备环境 1.1 word版本:MacOS系统下的Office360 word for Mac下好多操作和win的不一样啊啊啊,差点栽在Mac word的模版设计上. win版本的word模版设 ...
- freemarker实现word文档模板动态生成
携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第29天,点击查看活动详情 1.写在前面 很多时候,我们可能需要根据一个word模板,动态生成,我们所需要得一个word文档. 那这 ...
- 使用FreeMarker给word文档里生成柱状图
学习目标: 使用FreeMarker给word文档里生成柱状图 1制作ftl文件: 1.先创建个空白的word文档 然后插入柱状图 2.另存为xml文件 打开后是这样 3.百度搜索 XML 在线格式化 ...
- python新建word文档_python_docx制作word文档
一.docx模块 Python可以利用python-docx模块处理word文档,处理方式是面向对象的.也就是说python-docx模块会把word文档,文档中的段落.文本.字体等都看做对象,对对象 ...
- python_docx制作word文档
python_docx制作word文档 一.docx模块 Python可以利用python-docx模块处理word文档,处理方式是面向对象的.也就是说python-docx模块会把word文档,文档 ...
- spring使用freemarker生成word文档包含表格、图片(循环插入)
spring使用freemarker生成word文档包含表格.图片(循环插入) 效果图 因为测试数据是重复的,所以显示都是重复的数据,替换导入map中的数据可以显示不重复的数据. 操作步骤 1,创建一 ...
- freemarker导出Word文档并在其中插入图片
先将word转成xml格式,再用notepad将其转为ftl格式(将要填入数据的地方加个占位符,${name}) import java.io.File; import java.io.FileInp ...
- 用freemarker生成word文档,并插入图片
用freemarker生成word文档,并插入图片 最近需要做一个问卷功能,要求用户填写完问卷后,后台会生成一个word文档,将用户提交的数据插入到word中. 创建word模板 新建一个word文档 ...
最新文章
- springboot-mysql-email集成
- node.js 多异步之间的协作方案
- EF 4.1中内部经常提交的 exec sp_reset_connection 的用途原来是为了重用池中的连接...
- spring jdbctemplate源码跟踪
- jquery不同版本冲突导致低版本功能不能用
- jeecg公开课今晚主题:新版本功能介绍、online原理和代码生成器,欢迎大家报名
- .net IntPtr ==interoperable pointer
- bigdecimal除法保留4位小数_小猿圈分享-MySQL保留几位小数的4种方法
- K8s CKS认证学习全套笔记
- liunx 系统下面安装jdk
- OLT忘记登陆密码如何修改
- Intel CPU平台和架构介绍
- 安卓源码目录最全解析
- 100句永久珍藏的人生格言
- 网易测试工程师笔经面经(已上岸)
- 微信小程序开发之获取用户信息
- XP SP2激活总集
- Oval验证框架学习
- 阿里二面: 说一下从url输入到返回请求的过程
- 外部PLC触发VisionMaster多流程运行
热门文章
- (内容提供者)备份短信和添加短信
- flutter 隐藏返回按钮 自定义返回按钮
- oracle hint 谓词推进,oracle常见hint
- 安卓手机tiktok怎么下载_安卓手机清理大师下载安装-安卓手机清理大师官方下载v1.0.0 最新版...
- 计算机桌面空间,不占桌面空间的电脑底座!说不定你需要用到它
- C语言 猜凶手及类似题目
- Java字符集编码解码详细介绍
- 超级简单的EOS代币转账教程(EETH)
- 常用的几种Hints优化一条SQL
- excel 批量打印word、excel所有sheet 的 vba代码