模板引擎-freemarker
Freemarker 是一款模板引擎,是一种基于模版生成静态文件的通用 工具,它是为java程序员提供的一个开发包。
可通过将Word或者Excel模板另存为xml格式,在其中修改要替换的内容。
基本语法
基本内容输出:
${***}
List循环输出:
<#list namelist as item>
${item.name}
</#list>
item_index:当前变量的索引值
item_has_next:是否存在下一个对象
使用<#break>指令跳出迭代
List的总数获取:
${namelist?size}
Map循环输出:
<#list empMap?keys as key>
${empMap[key]}
</#list>
设定变量:
<#assign age=23>
判断:
表达式中支持的比较运算符有如下几个:
=或者==:判断两个值是否相等.
!=:判断两个值是否不等.
>或者gt:判断左边值是否大于右边值
>=或者gte:判断左边值是否大于等于右边值
<或者lt:判断左边值是否小于右边值
<=或者lte:判断左边值是否小于等于右边值
<#if (name == 'zhangsan') >
zhangsan
<#elseif (name == 'lisi')>
lisi
<#else>
wangwu
</#if>
默认值:
${empMap['name']?default("wangwu")}
${empInfo.empName?default('')}
null值判断和处理:
${empMap[key]!("null")}
?default('')
<#if empMap[key]??></#if>
${empMap['name']?if_exists
日期处理:
?string("yyyy/M/d")
<#if items.birthday??>${items.birthday?string("yyyy/M/d")}</#if>
数字格式化:
${strnum?string(",##0.0#")}
${strnum?string("#0.0#")}
excel使用
在excel中设置好模板,模板内容最好先用要替代的字段名称代替,方便替换。将excel另存为xml格式文件。
打开xml文件找到<Row>将替换内容用${***}代替,同时循环行添加<# list>。
因有时excel设置有最大行数限制,因此需要修改Worksheet的属性ss:ExpandedRowCount,ss:ExpandedColumnCount设置为一个合理的范围。
否则最后生成excel后会有打不开报错的情况。
/**
* @Description: 导出文件,使用FreeMarker
* @author DennyZhao
* @date 2017年12月20日
* @version 1.0
*/
public abstract class ExportController { public static Configuration config = null;
static {
String templatePath = File2Utils.getResourcePath() + "/ftl";
try {
config = new Configuration(Configuration.VERSION_2_3_27);
config.setDefaultEncoding("UTF-8");
config.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
config.setDateFormat(Date2Utils.DATE_FORMAT_DEFAULT);
config.setDirectoryForTemplateLoading(new File(templatePath));
} catch (IOException e) {
e.printStackTrace();
}
} /**
* 获取数据
* @return
*/
protected abstract Map<String, Object> getData(SearchCondition condition); public void createTemplateStream(HttpServletResponse resp, String fileName, SearchCondition condition) {
Template template = null;
try {
template = config.getTemplate(fileName);
Writer osw = new OutputStreamWriter(resp.getOutputStream(), CommonConstants.ENCODE_CHARSET_DEFAULT);
template.process(getData(condition), osw);
osw.flush();
osw.close();
} catch (TemplateNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedTemplateNameException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TemplateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} /**
* 文件模板下载
* @param outputStream
* @throws IOException
*/
public void createFileModelStream(HttpServletResponse resp,String fileName) throws IOException {
OutputStream os = resp.getOutputStream();
String modelFilePath = File2Utils.getResourcePath() + "/fileModel";
File file = new File(modelFilePath, fileName);
InputStream is = new FileInputStream(file);
resp.setContentLengthLong(is.available());
byte[] b = new byte[1024];
int count = 0;
while((count = is.read(b, 0, 1024)) > 0) {
os.write(b, 0, count);
}
is.close();
os.flush();
os.close();
} }
参考文章:
Freemarker实例教程(http://blog.csdn.net/chenghui0317/article/details/7832474)
另类:JAVA用freemarker生成复杂Excel(http://blog.csdn.net/zhanwentao2/article/details/7298341)
模板引擎-freemarker的更多相关文章
- 实现一个代码自动生成(一):模板引擎Freemarker
目录 前言 模板引擎FreeMarker 前言 在现在的开发当中,代码生成已经是必不可少的一个功能,每个公司都会有自己的一套定制的项目骨架,而实现代码自动生成,模板引擎是必不可少的,所以在这篇博客中, ...
- Java模板引擎Freemarker
Java模板引擎Freemarker 1.取值(插值)指令 2.逻辑指令:if.switch 3.字符串.集合操作 4.自定义函数 5.list排序内建函数.常用指令 6.自定义指令 7.freema ...
- Java模板引擎 FreeMarker
@(编程) [TOC] 1. 简介 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写.它是为Java程序员提供的一个开发包.它不是面向最终用户的,而是为程序员 ...
- Spring Boot (三)模板引擎FreeMarker集成
一.FreeMaker介绍 FreeMarker是一款免费的Java模板引擎,是一种基于模板和数据生成文本(HMLT.电子邮件.配置文件.源代码等)的工具,它不是面向最终用户的,而是一款程序员使用的组 ...
- springboot配置server相关配置&整合模板引擎Freemarker、thymeleaf&thymeleaf基本用法&thymeleaf 获取项目路径 contextPath 与取session中信息
1.Springboot配置server相关配置(包括默认tomcat的相关配置) 下面的配置也都是模板,需要的时候在application.properties配置即可 ############## ...
- springboot集成模板引擎freemarker和thymeleaf
freemarkder和thymeleaf都是java的模板引擎,这里只介绍这两种模板引擎如何在sprongboot中配置: 1. freemarkder 1.1 在pom.xml中添加依赖包 < ...
- SpringBoot系列:Spring Boot使用模板引擎FreeMarker
一.Java模板引擎 模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档. 在jav ...
- SpringBoot第九集:整合JSP和模板引擎Freemarker/Thymeleaf(2020最新最易懂)
SpringBoot第九集:整合JSP和模板引擎(2020最新最易懂) 当客户通过前端页面提交请求后,我们以前是怎么做的?后端接收请求数据,处理请求,把响应结果交给模板引擎JSP,最后将渲染后的JSP ...
- Spring Boot整合模板引擎freemarker
jsp本质是servlet,渲染都在服务器,freemarker模板引擎也是在服务器端渲染. 项目结构 引入依赖pom.xml <!-- 引入 freemarker 模板依赖 --> &l ...
随机推荐
- vulcanjs 开源工具方便快速开发react graphql meteor 应用
vulcan 开源工具方便快速开发react graphql meteor 应用 操作环境mac os 安装 meteor 安装(此安装有点慢,可以通过正确上网解决) curl https://ins ...
- 使用 dl 设计的简单的登陆界面 (为了记录)
先贴图 对应的地方放置 一些登陆的图片即可 html 代码如下: <html><head><style>body {text-align:center;margin ...
- No result defined for action com.nynt.action.ManageAction and result input问题
No result defined for action com.nynt.action.ManageAction and result input 问题原因: 1). 在action类中定义的一个r ...
- 复制IE缓存里多个文件的方法
IE8缓存地址可以自己设置,要复制里面的文件,需要点小技巧: 真正的文件在E:\baidu download\Internet 临时文件\content.ie5下面:E:\baidu download ...
- nginx 各参数说明
nginx 各参数说明: 参数 所在上下文 含义
- UOJ 188 【UR #13】Sanrd——min_25筛
题目:http://uoj.ac/problem/188 令 \( s(n,j)=\sum\limits_{i=1}^{n}[min_i>=p_j]f(j) \) ,其中 \( min_i \) ...
- css 填坑常用代码分享[居家实用型]
原文地址 http://www.cnblogs.com/jikey/p/4233003.html 以下是常用的代码收集,没有任何技术含量,只是填坑的积累.转载请注明出处,谢谢. 一. css 2.x ...
- Git断点续传和离线增量更新的实现
cnblogs官方支持Markdown写博客了,亲测一下. ____ 什么是Bundle文件 Bundle文件是在packfile文件的基础上增加了代码库的元信息.通俗的说bundle文件就是一个便携 ...
- CentOS 7安装和配置ssh
1. 安装openssh-server yum install -y openssl openssh-server 2. 修改配置文件 用vim打开配置文件/etc/ssh/sshd_config ...
- Spring中的后置处理器BeanPostProcessor讲解
Spring中提供了很多PostProcessor供开发者进行拓展,例如:BeanPostProcessor.BeanFactoryPostProcessor.BeanValidationPostPr ...