使用Java模版引擎FreeMarker生成复杂的Word文档

简介:

目前Java操作office文档常用的有以下几种方案(POIiTextjacob这三种)

以上三种方案优缺点分析如下:

Jacod是使用dll文件,使用它项目只能在windows系统中使用。但是大家知道java项目的特性是良好的可移植性,所以不建议使用。而且它处理文档的效率不是很好。

POIword文档还行,写文档实在不敢恭维,复杂的样式很难控制不提,想象一下一个20多页,嵌套很多表格和图像的word文档靠POI来写代码输出,对程序员来说比去山西挖煤还惨,况且文档格式还经常变化。

iText操作Excel还行。对于复杂的大量的word也是噩梦。

(直接通过JSP输出样式基本不达标,而且要打印出来就更是惨不忍睹。)

新方案:Word2003开始支持XML格式,用XML来做就很简单了

大致分以下三个步骤:

一、先用office2003或更高版本编辑好word模版,然后另存为xml文件

二、使用FirstObject XML Editorxml翻译为FreeMarker模板

三、最后用java来解析FreeMarker模板并输出Doc

经测试这样方式生成的word文档完全符合office标准,样式、内容控制非常便利,打印也不会变形,生成的文档和office中编辑文档完全一样

看看实际效果

首先用office【版本要2003以上,以下的不支持xml格式】编辑文档的样式,图中下划线的部分就是要输出的部分:

110322407.jpg

将编辑好的文档另存为XML

110342659.jpg

再用Firstobject free XML editorxml中我们需要填数据的地方打上FreeMarker标记

110438311.jpg

最后生成的文档样式


110500633.jpg

提示:

要使用这个新方案,你必须了解FreeMarker这个很优秀的Java模版引擎。官方中文API下载请点击这里中文版手册(PDF

Firstobject free XML editor工具下载,等你给xml添加好Freemarker标签后直接将xml文件后缀修改为ftl文件。(ftl文件为Freemarker模版文件)

Freemarker下载

相关连接:

MyEclipse集成FreeMarker教程

本教程的源码



本文转自 沫沫金 51CTO博客,原文链接:http://blog.51cto.com/zl0828/807438,如需转载请自行联系原作者

相关文章
|
29天前
|
安全 小程序 Java
基于Java实训中心管理系统设计和实现(源码+LW+调试文档+讲解等)
基于Java实训中心管理系统设计和实现(源码+LW+调试文档+讲解等)
|
9天前
|
JavaScript Java
Java 将Markdown文件转换为Word和PDF文档
【7月更文挑战第5天】Java中使用`Spire.Doc for Java`库可方便地将Markdown转换为Word或PDF。基本步骤包括导入模块,创建`Document`对象,加载Markdown文件,然后保存为目标格式(`.docx`或`.pdf`)。若遇到`Invalid UTF-8 stream`错误,需确保Markdown文件是UTF-8无BOM编码。页面设置可通过`PageSetup`类调整。注意,实际应用会依据具体需求和环境有所调整。
|
28天前
|
Java 开发者
Java文档注解中@link与@see的使用详解
Java文档注解中@link与@see的使用详解
18 0
|
29天前
|
小程序 Java 数据库
基于Java作业管理系统设计和实现(源码+LW+调试文档+讲解等)
基于Java作业管理系统设计和实现(源码+LW+调试文档+讲解等)
|
29天前
|
小程序 Java 关系型数据库
基于Java学生选课管理系统设计和实现(源码+LW+调试文档+讲解等)
基于Java学生选课管理系统设计和实现(源码+LW+调试文档+讲解等)
|
29天前
|
小程序 Java 关系型数据库
基于Java学生干部管理系统设计和实现(源码+LW+调试文档+讲解等)
基于Java学生干部管理系统设计和实现(源码+LW+调试文档+讲解等)
|
29天前
|
小程序 Java 关系型数据库
基于Java网络商城系统设计和实现(源码+LW+调试文档+讲解等)
基于Java网络商城系统设计和实现(源码+LW+调试文档+讲解等)
Java:模板引擎FreeMarker
Java:模板引擎FreeMarker
196 0
Java:模板引擎FreeMarker
|
Java
Java模板引擎之FreeMarker
ava工程中使用freemarker例子 Java之利用Freemarker模板引擎实现代码生成器,提高效率 Java模版引擎:jsp、freemarker、velocity区别 Java模版引擎之Freemarker篇 Java 模板引擎总结 ...
1224 0
|
2天前
|
Java 程序员 调度
Java中的多线程编程:概念、实现及性能优化
【5月更文挑战第85天】本文主要探讨了Java中的多线程编程,包括其基本概念、实现方式以及如何进行性能优化。首先,我们将介绍多线程的基本概念,然后详细讨论如何在Java中实现多线程,包括继承Thread类和实现Runnable接口两种方式。最后,我们将探讨一些提高多线程程序性能的策略,如使用线程池和减少同步开销等。