模板引擎freemarker的简单使用教程
freemarker十分强大,而且不依赖web容器,个人感觉十分好用。下面直接进主题,freemarker还有什么特性,请找度娘或谷哥~一、freemarker生成word1.创建模板。我创建模板的方法比较简单,也不知道有没有其他更好的方法,有的话,请告诉我吧~首先是新建一个word文档,按照内容格式排好版,然后在需要注入信息的位置先写上占位置的数据,如图1
·
freemarker十分强大,而且不依赖web容器,个人感觉十分好用。
下面直接进主题,freemarker还有什么特性,请找度娘或谷哥~
一、freemarker生成word
1.创建模板。
我创建模板的方法比较简单,也不知道有没有其他更好的方法,有的话,请告诉我吧~
首先是新建一个word文档,按照内容格式排好版,然后在需要注入信息的位置先写上
占位置的数据,如图1,然后另存为xml文件(我是存为2003版本的xml),
然后用文本编辑器把xml打开,在xml中把对应的数据
改为freemarker的输出表达式,如图2,然后保存,把xml的后缀名改为freemarker的文件后缀名
ftl,便是一个
freemarker模板了。
图1
图2
2.实现程序
- 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.UnsupportedEncodingException;
- import java.io.Writer;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.Map;
- import freemarker.template.Configuration;
- import freemarker.template.Template;
- import freemarker.template.TemplateException;
- /**
- * 使用freemark生成word
- *
- */
- public class Freemark {
- public static void main(String[] args){
- Freemark freemark = new Freemark("template/");
- freemark.setTemplateName("wordTemplate.ftl");
- freemark.setFileName("doc_"+new SimpleDateFormat("yyyy-MM-dd hh-mm-ss").format(new Date())+".doc");
- freemark.setFilePath("bin\\doc\\");
- //生成word
- freemark.createWord();
- }
- private void createWord(){
- Template t = null;
- try {
- //获取模板信息
- t = configuration.getTemplate(templateName);
- } catch (IOException e) {
- e.printStackTrace();
- }
- File outFile = new File(filePath+fileName);
- Writer out = null;
- try {
- out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "UTF-8"));
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- }
- Map map = new HashMap<String, Object>();
- map.put("name", "蒙奇·D·路飞");
- map.put("country", "日本");
- map.put("city", "东京");
- map.put("time",new SimpleDateFormat("yyyy-MM-dd hh-mm-ss").format(new Date()));
- try {
- //输出数据到模板中,生成文件。
- t.process(map, out);
- out.close();
- } catch (TemplateException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- /**
- * freemark初始化
- * @param templatePath 模板文件位置
- */
- public Freemark(String templatePath) {
- configuration = new Configuration();
- configuration.setDefaultEncoding("utf-8");
- configuration.setClassForTemplateLoading(this.getClass(),templatePath);
- }
- /**
- * freemark模板配置
- */
- private Configuration configuration;
- /**
- * freemark模板的名字
- */
- private String templateName;
- /**
- * 生成文件名
- */
- private String fileName;
- /**
- * 生成文件路径
- */
- private String filePath;
- public String getFileName() {
- return fileName;
- }
- public void setFileName(String fileName) {
- this.fileName = fileName;
- }
- public String getFilePath() {
- return filePath;
- }
- public void setFilePath(String filePath) {
- this.filePath = filePath;
- }
- public String getTemplateName() {
- return templateName;
- }
- public void setTemplateName(String templateName) {
- this.templateName = templateName;
- }
- }
3.程序运行后,会在bin的doc目录下生成doc文件,效果图
4.demo源码下载:
http://download.csdn.net/detail/stormwy/7370997
因为Demo比较小,也可以通过图包的方式下载,把下图下载改名解压即可:
因为Demo比较小,也可以通过图包的方式下载,把下图下载改名解压即可:
更多推荐
已为社区贡献31条内容
所有评论(0)