JAVA 数据导出Word文档模板的功能实现
2017-11-09 10:13
555 查看
对于这个功能,想必也有其他平台会需要吧。比如51job导出文档形式的简历这样。我在这里讲的是用java代码能满足我们实现这一功能的好用的一些方法。废话不多说了。
这种导出word,用XML的方式实现,相对简单。 word2003版本以后的都可以保存xml的形式。
模板:
保存成xml文件,用Notepad++打开编辑,并将这些需要添加的字段值用${ } 包着。这样才满足xml文件获取对应key键。
如果一张表想for循环得到多条数据,则需要在对应位置添加 <#list newList as listKey>
然后把这样xml文件另存为.ftl文件,导入.ftl模板文件到指定目录。加载jar包freemarker.jar下载
代码如下:
注意:1. ftl文件里的<#list newList as listKey>中的newList要和代码里的
这种导出word,用XML的方式实现,相对简单。 word2003版本以后的都可以保存xml的形式。
模板:
保存成xml文件,用Notepad++打开编辑,并将这些需要添加的字段值用${ } 包着。这样才满足xml文件获取对应key键。
如果一张表想for循环得到多条数据,则需要在对应位置添加 <#list newList as listKey>
然后把这样xml文件另存为.ftl文件,导入.ftl模板文件到指定目录。加载jar包freemarker.jar下载
代码如下:
public class WordUtil { private Configuration configuration = null; public WordUtil(){ configuration = new Configuration(); configuration.setDefaultEncoding("UTF-8"); } public void createWord(){ Map<String,Object> dataMap=new HashMap<String,Object>(); getData(dataMap); configuration.setClassForTemplateLoading(WordUtil.class, "/com/jinsuicloud/api/util");//模板文件所在路径 Template t=null; try { // System.err.println("路径:"+WordTest.class.getClassLoader().getResource("/").toURI()); t = configuration.getTemplate("test03.ftl"); //获取模板文件 } catch (IOException e) { e.printStackTrace(); } File outFile = new File("E:/"+Math.random()*10000+".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("year", "2017"); dataMap.put("month", "11"); dataMap.put("day", "8"); dataMap.put("oneName", "黎明"); List<Map<String,Object>> newList = new ArrayList<Map<String,Object>>(); for (int i = 0; i < 10; i++) { Map<String,Object> listKey = new LinkedHashMap<String,Object>(); listKey.put("id", i); listKey.put("name", "李明"+i); listKey.put("age", "age"+i); listKey.put("love", "love"+i); newList.add(listKey); } System.err.println("12222==="+newList); dataMap.put("newList", newList); } public static void main(String[] args) { WordUtil test = new WordUtil(); Map<String,Object> dataMap=new HashMap<String,Object>(); test.createWord(); // test.getData(dataMap); } }
注意:1. ftl文件里的<#list newList as listKey>中的newList要和代码里的
dataMap.put("newList", newList)key键一致。
2.如果ftl文件报错,关于某个字段错了什么的。可以在前面加
<#if myOptionalVar??>${listKey.id} <#else></#if> 这段代码意思是,如果id不为null,就进来,否则就进<#else>中。
相关文章推荐
- java实现把数据库数据导出成word文件实现文件下载功能
- java freemarker模板 实现word文件导出
- 通用的web系统数据导出功能设计实现(导出excel2003/2007 word pdf zip等)
- 通用的web系统数据导出功能设计实现(导出excel2003/2007 word pdf zip等)
- java操作Excel之POI(5)利用POI实现使用模板批量导出数据
- java根据ftl模板导出word文档
- Java:封装POI实现word的docx文件的简单模板功能
- Java:使用POI实现word的docx文件的模板功能
- Java实现用Freemarker完美导出word文档(带图片)
- PageOffice实现最简单的Java导出Word中的数据
- 使用struts2实现数据库数据导出成word文档(项目当中实际用的)
- java 将ftl文件作为模板导出word文档
- 具有强大构建强大的Word报表,支持XAML数据绑定,文档格式转换,导出为PDF等功能的控件TX Text Control .NET for WPF介绍
- ThinkPHP 整合 PHPExcel ,数据导出功能实现,解决Invalid cell coordinate PHPExcel想必大家都不陌生,是用来操作Office Excel 文档的一个PHP
- java 读word文档模板,同时往word文档里面插入数据
- java实现导出word功能(包含图片)一
- java使用freemarker模板导出word(带有合并单元格)文档
- javaUtil---导出数据到word表格中后,下载word文档
- java实现的导出word文档
- JAVA 将数据导出Word文档(经过测试)