word模版,另存成test.xml ,然后修改参数 。将test.xml改为test.ftl.
然后用网上的这段代码生成word文档。 打开时总是提示如下图(数据填入正确)
public void createDoc() {
//要填入模本的数据文件
Map<String,String> dataMap=new HashMap<String,String>();
getData(dataMap);
//设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库装载,
//这里我们的模板是放在com.havenliu.document.template包下面
configuration.setClassForTemplateLoading(this.getClass(), "");
Template t=null;
try {
//test.ftl为要装载的模板
t = configuration.getTemplate("test.ftl");
} catch (IOException e) {
e.printStackTrace();
}
//输出文档路径及名称
File outFile = new File("D:/outFile.xml");
Writer out = null;
try {
out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile)));
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
try {
t.process(dataMap, out);
} catch (TemplateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally
{
try {
out.close(); //释放流
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
使用java生成word文档中的ftl怎么写
Java语言提供了一种强大的注释形式:文档注释。可以将源代码里的文档注释提取成一份系统的API文档。我们在开发中定义类、方法时可以先添加文档注释,然后使用javadoc工具来生成自己的API文档。
文档注释以斜线后紧跟两个星号(/**)开始,以星号后紧跟一个斜线(*/)作为结尾,中间部分全部都是文档注释,会被提取到API文档中。
自行搜索一下javadoc即可,示例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/**
* 类描述
*
* @author 作者
* @version 版本
*/
public class DemoClass {
/**
* 内部属性:name
*/
private String name;
/**
* Setter方法
* @return name
*/
public String getName() {
return name;
}
/**
* Getter方法
* @param name
*/
public void setName(String name) {
this.name = name;
}
}
java freemarker 通过ftl模板导出word文档
循环列表需要加<#list datas as bean></#list>标签的;
<#list datas as bean></#list>加载哪个位置呢?
我写了个例子给你,但是代码太长,发不了,你对着图看看吧
java ftl转word 后再通过openOffice转成pdf,里面内容却是xml的
两种方式:
1、纯Java,用POI来做
2、用JNA调用word接口,根据office api来做
第一种呢对于java开发来说相对简单,但是需要学POI,而且估计有些格式控制不好。第二种要学习JNA,而且需要边做变差word的office api。
实在是不明白FreeMarker比JSP好在什么地方
在java领域,表现层技术主要有三种:jsp、freemarker、velocity。
jsp是大家最熟悉的技术
优点:
1、功能强大,可以写java代码
2、支持jsp标签(jsp tag)
3、支持表达式语言(el)
4、官方标准,用户群广,丰富的第三方jsp标签库
5、性能良好。jsp编译成class文件执行,有很好的性能表现
缺点:
jsp没有明显缺点,非要挑点骨头那就是,由于可以编写java代码,如使用不当容易破坏mvc结构。
velocity是较早出现的用于代替jsp的模板语言
优点:
1、不能编写java代码,可以实现严格的mvc分离
2、性能良好,据说比jsp性能还要好些
3、使用表达式语言,据说jsp的表达式语言就是学velocity的
缺点:
1、不是官方标准
2、用户群体和第三方标签库没有jsp多。
3、对jsp标签支持不够好
freemarker
优点:
1、不能编写java代码,可以实现严格的mvc分离
2、性能非常不错
3、对jsp标签支持良好
4、内置大量常用功能,使用非常方便
5、宏定义(类似jsp标签)非常方便
6、使用表达式语言
缺点:
1、不是官方标准
2、用户群体和第三方标签库没有jsp多
选择freemarker的原因:
1、性能。velocity应该是最好的,其次是jsp,普通的页面freemarker性能最差(虽然只是几毫秒到十几毫秒的差距)。但是在复杂页面上(包含大量判断、日期金额格式化)的页面上,freemarker的性能比使用tag和el的jsp好。
2、宏定义比jsp tag方便
3、内置大量常用功能。比如html过滤,日期金额格式化等等,使用非常方便
4、支持jsp标签
5、可以实现严格的mvc分离
java方式导出word文档需要修改文字样式,跪求高手解决,急,在线等。
问题没说清楚。
对于word的操作,如果是 docx 可以把 docx当做zip来解压缩,解开后会得到文档的xml文件,稍加琢磨可以理解其中的含义,修改后,再更新回原zip更多
我的需求就是根据word模板导出word,然后word里面的内容需要从数据库查出来替换,现在我是使用FreeMarker的方式,把word另存为xml格式,然后改后缀名为ftl格式,现在能把里面的内容替换然后导出来,但是内容的样式不能改变。
哦,把模板中要改变的内容区域替换成 ${document},然后数据库中读到的内容赋值给document不就OK了?
问题是替换掉后,部分内容需要修改字体样式。
不知道你的ftl中的内容如何生成的,如果里面没有样式定义也谈不上改样式,建议你看看我说的docx 解压缩出的 document.xml ,其中是含有样式定义的,
例如:
转载请注明出处51数据库 » ftl打印word word文档转化成ftl文件