唐钰小宝A的gravatar头像
唐钰小宝A 2021-01-06 10:56:17

java导出word之FreeMarker生成word文档

项目描述

FreeMarker生成word文档的功能是由XML+FreeMarker来实现的。先把word文件另存为xml,在xml文件中插入特殊的字符串占位符,将xml翻译为FreeMarker模板,最后用java来解析FreeMarker模板,编码调用FreeMarker实现文本替换并输出Doc。

优点:比Java2word功能强大,也是纯Java编程。

详细步骤如下:

将调整好的word 模板,加上一些隐藏的标识,以至于后面要清晰的加上占位符(占位字符不要太复杂,如${10001},这样也方便一共有多少个  不会丢失),在每一个单元框中使用Ctrl+F9进行模板的设置,设置完成后保存。再将word另存为xml 格式的文件,然后直接将xml的后缀该为ftl格式的文件,最终是对ftl文件进行操作:

  1.简单的填充  ,在xml中找到上面的占位符对此加上如下: <w:t>${name}</w:t>,其中,name是代码中map<key,value>的key,那么通过代码value会自动填充到对应的位置。

   2.如果有多条数据则会使用list,在xml中找到上面的占位符对此加上如下 <#list learnings as w>(中间是你其中的某一代码块,由于太多没有整体复制,代码中全部体现,如果还有问题请联系本人)<#list>

  3.插入图片,需要在xml中找到上面的占位符对此加上<pkg:part pkg:name="/word/media/image1.jpeg" pkg:contentType="image/jpeg">
    <pkg:binaryData>${image}</pkg:binaryData>
  </pkg:part>

在代码中要将图片先转成base64码,然后在通过map传递对应的值。

运行环境

jdk7+IntelliJ IDEA

项目技术(必填)

freemarker

是否原创(转载必填原文地址)

绝对原创

项目截图(必填)

java导出word之FreeMarker生成word文档

java导出word之FreeMarker生成word文档

java导出word之FreeMarker生成word文档

运行截图(必填)

java导出word之FreeMarker生成word文档java导出word之FreeMarker生成word文档

java导出word之FreeMarker生成word文档java导出word之FreeMarker生成word文档

java导出word之FreeMarker生成word文档

注意事项(可选)

此文章适应各种的将Java转成word的操作。但是会有以下缺点生成的文件本质上是xml,不是真正的word文件格式,有很多常用的word格式无法处理或表现怪异,比如:超链、换行、乱码、部分生成的文件打不开等。

将Java转成我word还有以下几点可以同大家学习:

1:Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁。通过Jacob实现了在Java平台上对微软Office的COM接口进行调用。

  优点:调用微软Office的COM接口,生成的word文件格式规范。

  缺点:服务器只能是windows平台,不支持unix和linux,且服务器上必须安装微软Office。

2:Apache POI包括一系列的API,它们可以操作基于MicroSoft OLE 2 Compound Document Format的各种格式文件,可以通过这些API在Java中读写Excel、Word等文件。

  优点:跨平台支持windows、unix和linux。

  缺点:相对与对word文件的处理来说,POI更适合excel处理,对于word实现一些简单文件的操作凑合,不能设置样式且生成的word文件格式不够规范。

3:Java2word是一个在java程序中调用 MS Office Word 文档的组件(类库)。该组件提供了一组简单的接口,以便java程序调用他的服务操作Word 文档。 这些服务包括: 打开文档、新建文档、查找文字、替换文字,插入文字、插入图片、插入表格,在书签处插入文字、插入图片、插入表格等。

  优点:足够简单,操作起来要比FreeMarker简单的多。

  缺点:没有FreeMarker强大,不能够根据模版生成Word文档,word的文档的样式等信息都不能够很好的操作。

4:FreeMarker生成word文档的功能是由XML+FreeMarker来实现的。先把word文件另存为xml,在xml文件中插入特殊的字符串占位符,将xml翻译为FreeMarker模板,最后用java来解析FreeMarker模板,编码调用FreeMarker实现文本替换并输出Doc。

  优点:比Java2word功能强大,也是纯Java编程。

  缺点:生成的文件本质上是xml,不是真正的word文件格式,有很多常用的word格式无法处理或表现怪异,比如:超链、换行、乱码、部分生成的文件打不开等。

5:PageOffice生成word文件。PageOffice封装了微软Office繁琐的vba接口,提供了简洁易用的Java编程对象,支持生成word文件,同时实现了在线编辑word文档和读取word文档内容。

  优点:跨平台支持windows、unix和linux,生成word文件格式标准,支持文本、图片、表格、字体、段落、颜色、超链、页眉等各种格式的操作,支持多word合并,无需处理并发,不耗费服务器资源,运行稳定。

  缺点:必须在客户端生成文件(可以不显示界面),不支持纯服务器端生成文件。

大家可以通过以上的学习,学会将Java转成word。祝大家代码 永无bug。(在最后如果大家有什么疑问或者不会操作的可以私下联系(微信:1049936842,加之前请备注)或者留言)


打赏

已有1人打赏

最代码官方的gravatar头像

文件名:JavaGenWord.zip,文件大小:854.378K 下载
最代码最近下载分享源代码列表最近下载
1358849392  LV21 2023年10月12日
RrrReNax  LV3 2023年7月18日
tinashui2  LV1 2023年5月19日
yangdoudou  LV1 2022年9月21日
yinyun1985  LV14 2022年4月11日
xuyongff  LV24 2021年11月25日
x2b2d2  LV12 2021年8月17日
123456nty  LV36 2021年8月10日
ericxu1116  LV24 2021年5月3日
lz88888  LV11 2021年4月29日
最代码最近浏览分享源代码列表最近浏览
quartz  LV7 3月13日
qiuqiu233 2023年10月17日
暂无贡献等级
1358849392  LV21 2023年10月10日
randian  LV1 2023年8月30日
RrrReNax  LV3 2023年7月18日
tinashui2  LV1 2023年5月19日
IT达人  LV22 2023年2月16日
jirui_zz  LV12 2023年1月20日
微信网友_6191697646571520  LV6 2022年10月31日
and123456  LV11 2022年10月26日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友