用户登录
用户注册

分享至

ftl打印word word文档转化成ftl文件

  • 作者: 屎前驹饿
  • 来源: 51数据库
  • 2020-04-21

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文件

软件
前端设计
程序设计
Java相关