`
123629996
  • 浏览: 294389 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

freemark 工具类

 
阅读更多

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} 这样取得单一值。

很简单吧。

分享到:
评论

相关推荐

    freemark 资料学习

    对于频繁使用的模板,Freemarker可以缓存编译后的模板类,提高性能。 4. 国际化支持: Freemarker支持多语言环境,可以通过不同的消息资源文件提供不同语言的输出。 5. 静态类型检查: 使用`&lt;#assign&gt;`时可以...

    freemark开发指南详解

    本篇将深入讲解Freemarker的开发指南,帮助你更好地理解和使用这一工具。 1. **Freemarker基础概念** - **模板语言**:Freemarker使用的是基于文本的模板语言,它不包含任何编程语法,而是通过简单的标记来控制...

    freemark 生成静态页面

    总的来说,FreeMarker是Java Web开发中一个非常实用的工具,通过将业务数据和页面展示分离,提高了代码的可维护性和灵活性。通过深入学习和使用FreeMarker,开发者可以更高效地构建动态网页,提高开发效率。

    freemark 自定义标签 总结

    Java类通常继承`freemarker.template.TemplateDirectiveModel`接口,并重写`execute`方法。模板定义则是在`.ftl`文件中使用`&lt;#assign...&gt;`创建一个变量,然后将其关联到Java类实例。 3. **使用自定义标签** 在`....

    freemark首次使用代码,(包括freemarker.jar,模板xml以及java调用代码)

    在实际应用中,你可以根据需要扩展这个工具类,例如增加错误处理、模板缓存等功能。代码可能如下所示: ```java import org.freemarker.template.Configuration; import org.freemarker.template.Template; import ...

    freemaker导出word的doc_docx_带动态图片及word转pdf工具类_jar_万能整理汇总rengm.zip

    本资料包“freemaker导出word的doc_docx_带动态图片及word转pdf工具类_jar_万能整理汇总rengm.zip”提供了关于如何使用Freemarker处理动态图片并转换Word为PDF的详细工具和教程。 首先,我们关注“doc_docx”部分。...

    freemarker

    本主题将深入讲解如何利用Freemarker生成Word文档,并提供相关的工具和示例。 1. **Freemarker基本概念** - Freemarker是基于模板的,它通过解析模板文件与数据模型结合,生成最终的输出。 - 数据模型通常是Java...

    freemark插件

    总的来说,"freemark插件"为Eclipse用户带来了专业的Freemarker开发工具集,通过其提供的各种特性,使得在Eclipse中编写和维护Freemarker模板变得更加轻松和高效。对于从事Java Web开发的人员,特别是那些频繁处理...

    freemark+ssh 配置图解

    Hibernate通过将Java类与SQL数据库表映射,使得开发者可以使用对象模型进行数据库操作,而无需编写大量的SQL语句。 4. **Spring框架**:Spring是一个全面的Java企业级应用开发框架,它支持依赖注入、面向切面编程、...

    servlet与freeMark组合

    Servlet与FreeMarker是Java Web开发中的两个重要技术,它们经常被组合使用来构建动态网站。...同时,标签中的“源码”和“工具”提示,意味着要关注底层实现和工具的使用,这对于提升开发技能非常有帮助。

    freemark开发指南(入门)

    需要注意的是,Freemarker的灵活性和强大功能使得它成为Web开发中表示层的强大工具,但也需要对模板语言有深入理解,才能充分利用其潜力。通过实践和不断学习,开发者可以掌握Freemarker的高级技巧,提升Web应用的...

    freemark中文文档

    4.5 自定义函数:通过`freemarker.template.utility`包中的工具类或者自定义`DirectiveModel`,可以实现模板中的自定义功能。 总结,Freemarker是一个强大的模板引擎,通过模板、数据模型和配置,能够灵活地生成...

    FreeMarker

    这款工具并非面向最终用户,而是作为一个 Java 类库被程序员嵌入到他们开发的产品中。FreeMarker 采用了 Apache 许可证 2.0 版本发布,是完全免费的。 FreeMarker 的模板是用 FreeMarker Template Language (FTL) ...

    java freemark发送模板邮件

    JavaMail API包括了Message、Session、Transport等类,用于构建和发送邮件。 3. **集成FreeMarker与JavaMail**: 要将FreeMarker模板与JavaMail结合,首先需要创建一个FreeMarker模板文件(如`.ftl`),然后在Java...

    Java项目Freemark生成静态页面及语法

    总的来说,Freemarker是Java项目中生成静态页面的强大工具,结合Struts2可以构建高效、灵活的Web应用。通过熟练掌握Freemarker的语法和特性,你可以轻松地创建动态、响应式的用户界面。在sshDemo3TestFreeMark这个...

    ExportExcel.java

    Java 利用freemark模板导出excel工具类,利用模板进行快速导出

    freemark hellword

    数据模型通常是Java对象的集合,可以是Map、List或者其他自定义的Java类。这些对象的属性可以通过模板中的表达式访问。例如,如果有一个名为"user"的对象,我们可以在模板中使用`${user.name}`来获取用户的姓名。 ...

    在java代码中引用freemark

    这可以通过Maven或Gradle等构建工具完成,或者手动将JAR文件添加到项目的类路径中。 **3. 创建FreeMarker配置** 在Java代码中,我们需要创建一个`Configuration`对象来配置FreeMarker,设置模板目录、编码等参数。...

    freemark官方插件

    6. **模板加载器**:负责找到并加载模板文件,这通常是通过文件系统或类路径完成的。 7. **配置**:FreeMarker配置对象允许开发者设置全局属性,如模板语言的默认编码、模板加载策略等。 FreeMarker官方插件的使用...

    Struts2源码(xwork|asm|commons|freemark|ognl)

    `commons`指的是Apache Commons项目,这是一个包含各种实用工具类的库,对Struts2框架提供了广泛的支持。例如,Commons Lang提供了字符串处理、反射、日期时间等操作,而Commons BeanUtils帮助简化对象属性的设置和...

Global site tag (gtag.js) - Google Analytics