0
点赞
收藏
分享

微信扫一扫

java:使用freemarker操作word

陆公子521 2022-06-15 阅读 74

          java中对word的操作,通常可以使用poi,也可以使用itext,前者对word的表格等操作处理的不是太好。现在可以使用freemarker来操作word,方法如下:


1、把word转成成xml文档,在xml文档中找到要替换的位置、以及要循环的地方;

2、在xml的文档中,使用freemarker的标签(循环等)在相应位置输出;

3、将xml文档该文ftl文档;

4、编写java代码,使用freemarker替换对应的变量,然后把ftl另存为doc文档(不支持docx)


代码如下:

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;




public class FrameMarker {


/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Configuration config = new Configuration();
try {
config.setDirectoryForTemplateLoading(new File("e:\\freemark"));
config.setObjectWrapper(new DefaultObjectWrapper()); 
Template template = config.getTemplate("test.ftl","UTF-8"); 

//创建附件模型
Map root = new HashMap();   

Map map1 = new HashMap();
map1.put("a", "中");
map1.put("b", "国");
map1.put("c", "电");
map1.put("d", "子");
map1.put("e", "商务");
map1.put("f", "adsfsf");

root.put("data", map1);

File file = new File("e:\\freemark\\test.doc");
if(!file.exists()){   
file.createNewFile(); 
}
Writer out = new BufferedWriter(new FileWriter(file));  
template.process(root, out);   
out.flush();   
out.close();
} catch(Exception e){
e.printStackTrace();
}
}


}


举报

相关推荐

0 条评论