freemarker与word的xml来生成word
1.将word打开 -- 另存为 word(xml)格式 2.打开xml文件 进行格式化下(可以百度在线xml格式化) 3.将xml文件的后缀改为ftl 格式的 4.将ftl文件 放置项目reource下的(filetemplate)自定义路径也行 5.需要在pom中加jar包,进行导包 <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.23</version> </dependency> 6写代码 wordParamsMap.put("year", year); // 年份 ${year}-->对应ftl中的位置占位符 wordParamsMap.put("month", monthStr); // 月份、季度 wordParamsMap.put("system", taskName); // 定级系统 wordParamsMap.put("number1", number1); // 主机资产数量 wordParamsMap.put("number2", number2); // 网络资产数量 wordParamsMap.put("reportList", list); wordParamsMap.put("fileName", "中国电****作日志审计报告"); // word 文件名 /*数据填充 结束*/ exportWord(wordParamsMap); /** * word生成 (使用freemarker与word的xml来生成word) * @throws Exception */ @Override public void exportWord(Map<String, Object> ParamsMap) throws Exception { // String fileName = "exportWord_"; String fileName = ParamsMap.get("fileName")+".docx"; //复制模版文件到指定目录 String path = basePath+"/exportReport/" + DateUtil.date2Str(new Date(),DateUtil.DATE_FORMAT); File f = new File(path); if (!f.exists()) { f.mkdirs(); } // fileName +=DateUtil.date2Str(new Date(),DateUtil.DATE_TIME_FORMAT) + ".docx"; String fullPath = path+java.io.File.separatorChar+ fileName; //模版复制到对应路径(base工具类需要操作有相对路径的文件夹) String newTemplateTempPath = basePath+java.io.File.separatorChar+"filetemplate"; String templateName = "auditStrategyReport.ftl";//模版名称 FileUtil.copyFile2("filetemplate"+java.io.File.separatorChar+"auditStrategyReport.ftl", newTemplateTempPath+java.io.File.separatorChar+templateName, true); //生成word exportByFreemarker.generateWord(newTemplateTempPath,templateName,fullPath,ParamsMap); FileUtil.deleteDirectory(newTemplateTempPath); ---->util类 } package com.som.cloud.util.export.word; import freemarker.template.*; import org.springframework.stereotype.Component; import java.io.*; import java.util.Map; /** * 使用freemarker与word的xml来生成word * @Author: linww * @Date: Created in 10:38 2018/4/18. */ @Component("ExportByFreemarker") public class ExportByFreemarker { private Configuration configuration = null; public static Version version = new Version("2.3.23"); //FreeMarker版本号// 模板对象 public static Template template; public static DefaultObjectWrapperBuilder defaultObjectWrapperBuilder; public ExportByFreemarker(){ configuration = new Configuration(version);//设置FreeMarker版本号 configuration.setDefaultEncoding("UTF-8");//设置默认编码 configuration.setNumberFormat("#"); defaultObjectWrapperBuilder = new DefaultObjectWrapperBuilder(version); //用于创建defaultObjectWrapper } //生成word public boolean generateWord(String xmlTemplatePath, String xmlTemplateName, String outWordPath, Map<String,Object> wordParamsMap) throws Exception{ configuration.setDirectoryForTemplateLoading(new File(xmlTemplatePath)); configuration.setObjectWrapper(defaultObjectWrapperBuilder.build()); template = configuration.getTemplate(xmlTemplateName);//获取模版文件 File outFile = new File(outWordPath); Writer out = null; FileOutputStream fos = new FileOutputStream(outFile); out = new OutputStreamWriter(fos, "UTF-8"); template.process(wordParamsMap,out); out.flush(); out.close(); return false; } }