Java语言结合Freemaker技术导出Word文档
2013-02-20 11:09
531 查看
很多时候需要在项目中生成Word文档,Java语言结合Freemaker技术导出Word文档我觉得这种方式不错。
1.先看代码
主程序代码如下:
JavaBean代码如下:
上述代码都很容易理解,最大的疑问就是QQ.ftl文件时怎么来的?
2.模板文件
(a):根据已经编辑好的word模板QQ.doc,选择另存为QQ.xml文件,新建freemaker类型文件QQ.ftl,将QQ.xml文件拷贝到QQ.ftl文件中。
(b):修改ftl模板文件,将需要替换的内容用${biaoduan}这样的标签替换。
(ftl文件太长,不列出来了)
3.运行程序,word文件将生成到制定位置。
个人认为这种生成方式相对于jacob要方便很多。
资源下载地址如下:
http://download.csdn.net/detail/xiaocha2008/5074285
1.先看代码
主程序代码如下:
package com; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; 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.Template; import freemarker.template.TemplateException; public class Word { private Configuration configuration = null; public Word() { configuration = new Configuration(); configuration.setDefaultEncoding("utf-8"); } public void createDoc() { // 要填入模本的数据文件 Map dataMap = new HashMap(); getData(dataMap); // 设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库装载, // ftl文件存放路径 configuration.setClassForTemplateLoading(this.getClass(), "/com/ftl"); Template t = null; try { // test.ftl为要装载的模板 t = configuration.getTemplate("QQ.ftl"); t.setEncoding("utf-8"); } catch (IOException e) { e.printStackTrace(); } // 输出文档路径及名称 File outFile = new File("F:/2013/test.doc"); Writer out = null; try { out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8")); } catch (Exception e1) { e1.printStackTrace(); } try { t.process(dataMap, out); out.close(); } catch (TemplateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * * 注意dataMap里存放的数据Key值要与模板中的参数相对应 * @param dataMap */ private void getData(Map dataMap) { dataMap.put("title", "Test"); dataMap.put("nian", "二零一二"); dataMap.put("danweiming", "陕西"); List lists = new ArrayList(); WordBean w1 = new WordBean(); w1.setPaixu("1"); w1.setBiaoduan("标段一"); WordBean w2 = new WordBean(); w2.setPaixu("2"); w2.setBiaoduan("标段二"); lists.add(w1); lists.add(w2); dataMap.put("wordBeans", lists); dataMap.put("paiming", "1"); dataMap.put("biaoduan", "标段一"); } public static void main(String[] args) { new Word().createDoc(); } }
JavaBean代码如下:
package com; public class WordBean { public String paixu; public String biaoduan; public String getPaixu() { return paixu; } public void setPaixu(String paixu) { this.paixu = paixu; } public String getBiaoduan() { return biaoduan; } public void setBiaoduan(String biaoduan) { this.biaoduan = biaoduan; } }
上述代码都很容易理解,最大的疑问就是QQ.ftl文件时怎么来的?
2.模板文件
(a):根据已经编辑好的word模板QQ.doc,选择另存为QQ.xml文件,新建freemaker类型文件QQ.ftl,将QQ.xml文件拷贝到QQ.ftl文件中。
(b):修改ftl模板文件,将需要替换的内容用${biaoduan}这样的标签替换。
(ftl文件太长,不列出来了)
3.运行程序,word文件将生成到制定位置。
个人认为这种生成方式相对于jacob要方便很多。
资源下载地址如下:
http://download.csdn.net/detail/xiaocha2008/5074285
相关文章推荐
- java freemaker 导出word文档 高逼格教程
- Java利用freemaker和(excelXML表格或wordXML表格),导出自己任何想要格式的文档
- JAVA不使用POI,用PageOffice动态导出Word文档
- Java导出Word文档使用iText操作
- 使用Itext结合Jfreechart图表导出带图表的word文档
- 不用POI技术,JAVA给Word文档中的数据区域赋值
- java导出word文档
- Java用freemarker导出word文档
- Java导出word/execl文档
- java导出word文档
- JAVA 将数据导出Word文档(经过测试)
- JAVA 数据导出Word文档模板的功能实现
- Java导出Word文档案例
- java 导出word文档
- java导出word文档
- 今天做了freemaker 导出word文档 的bug修复,解决 \n换行 问题
- JAVA原始的导出excel文件,快捷通用 方便 还能够导出word文档哦
- javaUtil---导出数据到word表格中后,下载word文档
- Java导出Word文档(可设置字体)
- Java导出Word文档