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的操作。但是会有以下缺点生成的文件本质上是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,加之前请备注)或者留言)
猜你喜欢
- java自动生成数据库文档
- freemarker模板生成代码
- java代码通过freemarker模板实现自动生成dao,model,service,jsp
- Java模板引擎技术freemarker生成静态页面实现网页静态化
- freemarker模板引擎demo
- Spring MVC+swagger作为restful api的doc在线文档生成
- freemarker语法介绍及其入门教程实例
- Spring Boot整合FreeMarker实现用户登录提交表单实例
- freemarker macro实现分页实例源代码片断下载,可以指定步长
- Spring boot + Freemarker基础语法学习demo
- java根据模板生成word文件
- jsp也可以像java开源模板引擎freemarker一样生成本地文件作为代码生成器
- /
- /JavaGenWord
- /JavaGenWord/.classpath
- /JavaGenWord/.project
- /JavaGenWord/.settings
- /JavaGenWord/.settings/org.eclipse.core.resources.prefs
- /JavaGenWord/.settings/org.eclipse.jdt.core.prefs
- /JavaGenWord/bin
- /JavaGenWord/bin/com
- /JavaGenWord/bin/com/Abroad.class
- /JavaGenWord/bin/com/Family.class
- /JavaGenWord/bin/com/ftl
- /JavaGenWord/bin/com/ftl/人员情况.ftl
- /JavaGenWord/bin/com/ftl/人员情况.xml
- /JavaGenWord/bin/com
- /JavaGenWord/src
- /JavaGenWord
- freemarker模板引擎demo
- 证 Spring Boot整合FreeMarker实现用户登录提交表单实例
- freemarker模板生成代码
- freemarker语法介绍及其入门教程实例
- 原证精 freemarker macro实现分页实例源代码片断下载,可以指定步长
- java代码通过freemarker模板实现自动生成dao,model,service,jsp
- 原 Java模板引擎技术freemarker生成静态页面实现网页静态化
- 原证 Spring boot + Freemarker基础语法学习demo
- 原 Spring Boot学习(四)之web开发渲染页面 -- Freemarker博客源码分享
- 证精 年末最代码部分源码大出血分享-freemarker,bootstrap,springdata jpa分页代码
- 证 springMVC3.2+Hibernate4+freemarker入门简单小例子,适合初学者
- 自己在项目中写的简单的仿freemarker模板引擎工具