`
123629996
  • 浏览: 291101 次
  • 性别: 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} 这样取得单一值。

很简单吧。

分享到:
评论

相关推荐

    freemarker

    用freemarker生成Word 文档;里边有工具和示例;写的很清楚;用的话直接把jar 和 工具类 拿来用就行;【用freemarker生成Word 文档 XML DOC】

    FreeMarker

    FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所...

    ExportExcel.java

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

    springboot项目 maven聚合

    spring boot项目,使用了maven聚合,将实体类和和工具类抽出去,集成了mybatis,freemark,mysql,logback等技术

    SingleMyBatis 是基于Spring Framework基础上搭建的一个Java基础开发套件

    SingleMyBatis 是基于Spring Framework基础上搭建的一个Java基础开发套件,以Spring MVC为模型视图控制器,MyBatis为数据访问层。 * 核心框架:Spring Framework 4.2.7 ...* 工具类:fasterxml 2.8.7、junit 4.12、

    Springboot 2020年开发脚手架管理系统(10.75G)

    第13讲_通用验证码工具类设计及通用验证码方法设计实现.mp4 第14讲_登录页面表单验证设计实现及设计公用验证方法.mp4 第15讲_登录表单ajax异步请求方式讲_解.mp4 第16讲_错误码信息采用单例模式统1定义.mp4 第17讲_

    Java代码生成器xCode

    1)代码生成主要依赖于freeMark模板,不同的项目需求可以通过修改freeMark模板来实现。 2)如果是后台管理系统,则可以生成管理系统基本的网站页面及其功能。...util包是开发工具类相关的功能。

    Elasticsearch​的ORM工具orm4es.zip

    orm4es是一个Elasticsearch的ORM工具,它可以生成简单的查询对象.它本身非常简单,也很容易使用;代码生成通过freemark完成,它会自动解析es index 的mapping设置,根据mapping生成与index对应的java Bean,使用生成...

    毕业设计,基于SpringBoot+MySql开发的在线电影订票网站,内含Java完整源代码,数据库脚本,电影票模板

    毕业设计,基于SpringBoot+Freemark+MySql开发的在线电影订票网站,内含Java完整源代码,数据库脚本 基于Springboot+Freemarker+Mysql在线电影订票网站设计毕业源码案例设计 开发工具: Eclipse + JDK1.8 + Tomcat...

    易语言模块大全(374个)

    工具提示.ec 功能集一模块.ec 功能集一模块 1.0.ec 分辨率.ec 改变系统菜单.ec 改变系统菜单1.0改进版.ec 仿XP界面3.0特别版模块 3.0.ec 个性信息框1.ec 个性信息框1.21.ec 个性信息框.ec 高精度运算模块2.1版.ec ...

    易语言模块914个

    freemark模块_取文件.ec gdiplus类模块.ec GetStringSize.ec Hex-Dec.ec HTTP.ec http_ec.ec HTTP访问模块 .ec HTTP访问模块1.0.ec HTTP访问模块1.1.ec IC卡读写模块 1.0.ec internet2.ec IPbox2.ec IP...

    易语言模块大全(共775个模块)

    freemark模块_取文件(1.0).zip 仿WinXP窗口v3.1版(1.0).zip 仿WinXP窗口v3.0纪念版(1.0).zip 仿WinXP窗口v2.0特别版(1.0).zip 分割无逢文本模块(1.0).zip 分辨率模块(1.0).zip 方德算法-取CPU特征字(1.0).zip 仿...

    易语言700模块打包

    freemark模块_取文件(1.0).zip 仿WinXP窗口v3.1版(1.0).zip 仿WinXP窗口v3.0纪念版(1.0).zip 仿WinXP窗口v2.0特别版(1.0).zip 分割无逢文本模块(1.0).zip 分辨率模块(1.0).zip 方德算法-取CPU特征字(1.0).zip ...

    1345个易语言模块

    freemark 模块_取文件.ec ftp文件操作模块.ec gdiplus类模块.ec GetStringSize.ec GIF快 照.ec Hex-Dec.ec Hex-Dec1.ec Hex2Dec.ec hide.ec hotkey.ec HTTP.ec http_ec.ec http_ec1.ec HTTP 访问模块 .ec HTTP访问...

    1350多个精品易语言模块

    freemark 模块_取文件.ec ftp文件操作模块.ec gdiplus类模块.ec GetStringSize.ec GIF快 照.ec Hex-Dec.ec Hex-Dec1.ec Hex2Dec.ec hide.ec hotkey.ec HTTP.ec http_ec.ec http_ec1.ec HTTP 访问模块 .ec HTTP访问...

    E语言1000模块

    2005-12-11 01:55 5016 1490 易语言模块大全\freemark模块_取文件.ec 2005-10-21 15:30 4091 1371 易语言模块大全\GetStringSize.ec 2005-10-21 15:30 2804 952 易语言模块大全\Hex-Dec.ec 2005-10-21 15:30 ...

    易语言模块大全汇总批量下载

    2005-12-11 01:55 5016 1490 易语言模块大全\freemark模块_取文件.ec 2005-10-21 15:30 4091 1371 易语言模块大全\GetStringSize.ec 2005-10-21 15:30 2804 952 易语言模块大全\Hex-Dec.ec 2005-10-21 15:30 21249 ...

Global site tag (gtag.js) - Google Analytics