freemark工具类,根据传入的数据模型,生成对应的模板文件,如word等。。
package com.sgcc.ahepc.util; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.io.Writer; import java.util.Map; import freemarker.template.Configuration; import freemarker.template.Template; public class WordFreeMarkerUtil { /** * @param dataMap 数据对象 * @param templatePath 模板路径 * @param templateName 模板名称 * @param filePath 文件路径(生成文件的路径) * @param fileName 文件名称 */ public static void createWord(Map dataMap,String templatePath, String templateName, String filePath, String fileName) { try { // 创建配置实例 Configuration configuration = new Configuration(); // 设置编码 configuration.setDefaultEncoding("UTF-8"); // System.out.println(WordUtil.class.getCanonicalName()); // ftl模板文件统一放至 com.lun.template 包下面 configuration.setDirectoryForTemplateLoading(new File(templatePath)); // configuration.setClassForTemplateLoading(WordUtil.class,"ftl"); // 获取模板 Template template = configuration.getTemplate(templateName); // 输出文件 File outFile = new File(filePath + File.separator + fileName); // 如果输出目标文件夹不存在,则创建 if (!outFile.getParentFile().exists()) { outFile.getParentFile().mkdirs(); } // 将模板和数据模型合并生成文件 Writer out = new BufferedWriter(new OutputStreamWriter( new FileOutputStream(outFile), "UTF-8")); // 生成文件 template.process(dataMap, out); // 关闭流 out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); } } }
调用的时候这样就可以了
@RequestMapping("/exportSdxlCardWord") public void exportSdxlCardWord(String sdcrd_id,HttpServletRequest request,HttpServletResponse response) throws DocumentException, IOException{ Map<String,Object> pmap = new HashMap<String, Object>(); pmap.put("sdcrd_id", sdcrd_id); PmpEformSdCard card = eFormService.querySdCard(pmap); pmap.put("tmptcrd_type_cd", card.getTmptcrd_type_cd()); List<Map<String,Object>> list = eFormService.querySdTemplate(pmap); for (Map<String, Object> map : list) { String content = (String) map.get("TMPTCRD_CONTENT"); if(content == null){ map.put("TMPTCRD_CONTENT",""); } } Map<String,Object> dataMap = new HashMap<String, Object>(); dataMap.put("card", card); dataMap.put("list", list); String basePath = request.getSession().getServletContext().getRealPath("/") +File.separator+PropertiesUtil.get("file_up_load_path")+ File.separator+"ftl_template"+File.separator; String ftlPath = basePath+"ftl"; String docPath = basePath+"doc"; File dirPath = new File(ftlPath); File filePath = new File(docPath); if (!dirPath.exists()) { dirPath.mkdirs(); } if (!filePath.exists()) { filePath.mkdirs(); } WordFreeMarkerUtil.createWord(dataMap, ftlPath, "输电线路专业巡检作业卡.ftl",docPath, card.getSdcrd_name()+".doc"); FileUtil.downFile(docPath, card.getSdcrd_name()+".doc", response); }
还有一个重要的东东,就是ftl文件了,这个文件内容可以是任何形式的,基本语法很简单的。类似于jstl的表达式,也可以循环(<#list list as dtls>)配合代码中的list。${acptrpt.pdaptrpt_wk_dept} 这样取得单一值。
很简单吧。
相关推荐
对于频繁使用的模板,Freemarker可以缓存编译后的模板类,提高性能。 4. 国际化支持: Freemarker支持多语言环境,可以通过不同的消息资源文件提供不同语言的输出。 5. 静态类型检查: 使用`<#assign>`时可以...
本篇将深入讲解Freemarker的开发指南,帮助你更好地理解和使用这一工具。 1. **Freemarker基础概念** - **模板语言**:Freemarker使用的是基于文本的模板语言,它不包含任何编程语法,而是通过简单的标记来控制...
总的来说,FreeMarker是Java Web开发中一个非常实用的工具,通过将业务数据和页面展示分离,提高了代码的可维护性和灵活性。通过深入学习和使用FreeMarker,开发者可以更高效地构建动态网页,提高开发效率。
Java类通常继承`freemarker.template.TemplateDirectiveModel`接口,并重写`execute`方法。模板定义则是在`.ftl`文件中使用`<#assign...>`创建一个变量,然后将其关联到Java类实例。 3. **使用自定义标签** 在`....
在实际应用中,你可以根据需要扩展这个工具类,例如增加错误处理、模板缓存等功能。代码可能如下所示: ```java import org.freemarker.template.Configuration; import org.freemarker.template.Template; import ...
本资料包“freemaker导出word的doc_docx_带动态图片及word转pdf工具类_jar_万能整理汇总rengm.zip”提供了关于如何使用Freemarker处理动态图片并转换Word为PDF的详细工具和教程。 首先,我们关注“doc_docx”部分。...
本主题将深入讲解如何利用Freemarker生成Word文档,并提供相关的工具和示例。 1. **Freemarker基本概念** - Freemarker是基于模板的,它通过解析模板文件与数据模型结合,生成最终的输出。 - 数据模型通常是Java...
总的来说,"freemark插件"为Eclipse用户带来了专业的Freemarker开发工具集,通过其提供的各种特性,使得在Eclipse中编写和维护Freemarker模板变得更加轻松和高效。对于从事Java Web开发的人员,特别是那些频繁处理...
Hibernate通过将Java类与SQL数据库表映射,使得开发者可以使用对象模型进行数据库操作,而无需编写大量的SQL语句。 4. **Spring框架**:Spring是一个全面的Java企业级应用开发框架,它支持依赖注入、面向切面编程、...
Servlet与FreeMarker是Java Web开发中的两个重要技术,它们经常被组合使用来构建动态网站。...同时,标签中的“源码”和“工具”提示,意味着要关注底层实现和工具的使用,这对于提升开发技能非常有帮助。
需要注意的是,Freemarker的灵活性和强大功能使得它成为Web开发中表示层的强大工具,但也需要对模板语言有深入理解,才能充分利用其潜力。通过实践和不断学习,开发者可以掌握Freemarker的高级技巧,提升Web应用的...
4.5 自定义函数:通过`freemarker.template.utility`包中的工具类或者自定义`DirectiveModel`,可以实现模板中的自定义功能。 总结,Freemarker是一个强大的模板引擎,通过模板、数据模型和配置,能够灵活地生成...
这款工具并非面向最终用户,而是作为一个 Java 类库被程序员嵌入到他们开发的产品中。FreeMarker 采用了 Apache 许可证 2.0 版本发布,是完全免费的。 FreeMarker 的模板是用 FreeMarker Template Language (FTL) ...
JavaMail API包括了Message、Session、Transport等类,用于构建和发送邮件。 3. **集成FreeMarker与JavaMail**: 要将FreeMarker模板与JavaMail结合,首先需要创建一个FreeMarker模板文件(如`.ftl`),然后在Java...
总的来说,Freemarker是Java项目中生成静态页面的强大工具,结合Struts2可以构建高效、灵活的Web应用。通过熟练掌握Freemarker的语法和特性,你可以轻松地创建动态、响应式的用户界面。在sshDemo3TestFreeMark这个...
Java 利用freemark模板导出excel工具类,利用模板进行快速导出
数据模型通常是Java对象的集合,可以是Map、List或者其他自定义的Java类。这些对象的属性可以通过模板中的表达式访问。例如,如果有一个名为"user"的对象,我们可以在模板中使用`${user.name}`来获取用户的姓名。 ...
这可以通过Maven或Gradle等构建工具完成,或者手动将JAR文件添加到项目的类路径中。 **3. 创建FreeMarker配置** 在Java代码中,我们需要创建一个`Configuration`对象来配置FreeMarker,设置模板目录、编码等参数。...
6. **模板加载器**:负责找到并加载模板文件,这通常是通过文件系统或类路径完成的。 7. **配置**:FreeMarker配置对象允许开发者设置全局属性,如模板语言的默认编码、模板加载策略等。 FreeMarker官方插件的使用...
`commons`指的是Apache Commons项目,这是一个包含各种实用工具类的库,对Struts2框架提供了广泛的支持。例如,Commons Lang提供了字符串处理、反射、日期时间等操作,而Commons BeanUtils帮助简化对象属性的设置和...