java 使用freemarker生成word

来源:互联网 发布:华为it应用技术工程师 编辑:程序博客网 时间:2024/06/05 10:51

看了一些其他关于生成word的文档,不是展示的内容过多,就是代码示例不够详细,不能够满足初等技术人员的需求,本内容包括基本的数据填充和列表数据填充

1:创建word文档



2:另存为word2003 xml


3:填充变量


4:将xml文件修改后缀为ftl格式

发到项目包下

5:Java代码

package demo;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;


/**
 * 类说明:
 * 
 * @version 2.0
 *          <p>
 * 
 *          <pre>
 *   文件名:    demo.java  <br>
 *   创建人:    admin <br>
 *   时间:     2015年7月24日<br>
 * </pre>
 * 
 *          </p>
 **/


public class demo {


private Configuration configuration = null;


public demo() {
configuration = new Configuration();
configuration.setDefaultEncoding("UTF-8");
}


public static void main(String[] args) {
demo dm = new demo();
dm.createWord();
}


public void createWord() {
Map<String, Object> dataMap = new HashMap<String, Object>();
getData(dataMap);
configuration.setClassForTemplateLoading(this.getClass(), "/demo"); // FTL文件所存在的位置
Template t = null;
try {
t = configuration.getTemplate("demo.ftl"); // 文件名
} catch (IOException e) {
e.printStackTrace();
}
File outFile = new File("E:/demo.doc");
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();
}
}


private void getData(Map<String, Object> dataMap) {
dataMap.put("Title", "文档标题");
dataMap.put("date",
new SimpleDateFormat("yyyy-MM-dd").format(new Date()));


List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
for (int i = 0; i < 10; i++) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("Number", i);
map.put("Content", "文本内容" + i);
list.add(map);
}
dataMap.put("datelist", list);
}
}


6:Java包结构


7:生成


0 0
原创粉丝点击