使用freemarker生成html、doc文件【原创】
语言:java
功能:使用freemarker生成html、doc
1、生成html
public void updateuseFreemarker2html(String abdkId) {
// 要填入模本的数据文件
Session session = sessionFactory.getCurrentSession();
String hql = "from AbnmDktranssupervision as abnmDktranssupervision ";
AbnmDktranssupervision result = null;
try {
// 根据id用hql语言获取一个对象的数据
result = (AbnmDktranssupervision) session.get(
AbnmDktranssupervision.class, Integer.parseInt(abdkId));
} catch (Exception e) {
e.printStackTrace();
} // 设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库装载,
// 这里我们的模板是放在cn.edu.bnu.land.common包下面
configuration = new Configuration();
configuration.setEncoding(Locale.CHINA, "utf-8");
configuration.setClassForTemplateLoading(this.getClass(),
"/cn/edu/bnu/land/common");
Template t = null; try {
// freemarker2html.ftl为要装载的html模板
t = configuration.getTemplate("freemarker2html.ftl");
t.setEncoding("utf-8");
} catch (IOException e) {
e.printStackTrace();
} // 输出文档路径及名称
Calendar ca = Calendar.getInstance();
Date date = ca.getTime();
java.text.DateFormat format2 = new java.text.SimpleDateFormat(
"yyyyMMddhhmmss");
String dateString = format2.format(date);
//文件名称
String m_fileName = result.getTbbh() + "_" + dateString + ".html";
//
String realPath=this.getClass().getClassLoader().getResource("/").getPath();
System.out.println(realPath);
int pos=realPath.indexOf("/WEB-INF");
System.out.println(pos);
realPath=realPath.substring(0, pos);
realPath=realPath+"/Upload/abnmTransSupHtml/";
System.out.println(realPath);
String filePath = realPath +m_fileName;
result.setAbdkFilepath("/tdlzJGXT/Upload/abnmTransSupHtml/"+m_fileName); File outFile = new File(filePath);
Writer out = null;
try {
out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(outFile), "utf-8"));
} catch (Exception e1) {
e1.printStackTrace();
} try {
t.process(result, out);
out.close();
} catch (TemplateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} }
freemarker3html.ftl
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>异常交易预警信息</title>
</head>
<body>
<table>
<tr><td>图斑编号:</td><td>${tbbh!"无"}</td></tr>
<tr><td>图斑面积:</td><td>${tbmj!"无"}</td></tr>
<tr><td>项目编号:</td><td>${xmbh!"无"}</td></tr>
<tr><td>座落单位名称:</td><td>${zldwmc!"无"}</td></tr>
<tr><td>地类名称:</td><td>${dlmc!"无"}</td></tr>
<tr><td>行政区代码:</td><td>${xzqdm!"无"}</td></tr>
<tr><td>转让方:</td><td>${abdkSeller!"无"}</td></tr>
<tr><td>买入方:</td><td>${abdkBuyer!"无"}</td></tr>
<tr><td>坡度:</td><td>${abdkSlope!"无"}</td></tr>
<tr><td>坡度方差:</td><td>${abdkSlopevariance!"无"}</td></tr>
<tr><td>交易前中心点x坐标:</td><td>${abdkBx!"无"}</td></tr>
<tr><td>交易前中心点y坐标:</td><td>${abdkBy!"无"}</td></tr>
<tr><td>交易后中心点x坐标:</td><td>${abdkAx!"无"}</td></tr>
<tr><td>交易后中心点y坐标:</td><td>${abdkAy!"无"}</td></tr>
<tr><td>交易前价格:</td><td>${abdkBprice!"无"}</td></tr>
<tr><td>交易后面积:</td><td>${abdkAarea!"无"}</td></tr>
<tr><td>交易后价格:</td><td>${abdkAprice!"无"}</td></tr>
<tr><td>处理意见:</td><td>${abdkOpinion!"无"}</td></tr>
<tr><td>是否处理:</td><td>${abdkIssolved!"无"}</td></tr>
<tr><td>风险等级:</td><td>${abdkRisklevel!"无"}</td></tr>
<tr><td>预警时间:</td><td>${abdkWarningtime!"无"}</td></tr>
<tr><td>是否异常:</td><td>${abdkIsnormal!"无"}</td></tr>
<tr><td>稻谷产量:</td><td>${dgcl!"无"}</td></tr>
<tr><td>稻谷均价:</td><td>${dgjj!"无"}</td></tr>
<tr><td>存储位置:</td><td>${abdkFilepath!"无"}</td></tr>
</table> </body>
</html>
效果图:
2、生成doc
// ues freemarker+xml to doc
public void updateuseFreemarker2doc(String abdkId) {
// 要填入模本的数据文件
Session session = sessionFactory.getCurrentSession();
String hql = "from AbnmDktranssupervision as abnmDktranssupervision ";
AbnmDktranssupervision result = null;
try {
// System.out.println(hql);
result = (AbnmDktranssupervision) session.get(
AbnmDktranssupervision.class, Integer.parseInt(abdkId));
} catch (Exception e) {
e.printStackTrace();
} // 设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库装载,
// 这里我们的模板是放在com.havenliu.document.template包下面
configuration = new Configuration();
configuration.setDefaultEncoding("utf-8");
configuration.setClassForTemplateLoading(this.getClass(),
"/cn/edu/bnu/land/common");
Template t = null; try {
// test.ftl为要装载的模板
t = configuration.getTemplate("freemarker2doc.ftl");
t.setEncoding("utf-8");
} catch (IOException e) {
e.printStackTrace();
} // 输出文档路径及名称
Calendar ca = Calendar.getInstance();
Date date = ca.getTime();
java.text.DateFormat format2 = new java.text.SimpleDateFormat(
"yyyyMMddhhmmss");
String dateString = format2.format(date); //文件名称
String m_fileName = result.getTbbh() + "_" + dateString + ".doc";
//
String realPath=this.getClass().getClassLoader().getResource("/").getPath();
//System.out.println(realPath);
int pos=realPath.indexOf("/WEB-INF");
//System.out.println(pos);
realPath=realPath.substring(0, pos);
realPath=realPath+"/Upload/abnmTransSupDoc/";
//System.out.println(realPath);
String filePath = realPath +m_fileName;
result.setAbdkFilepath("/tdlzJGXT/Upload/abnmTransSupDoc/"+m_fileName); File outFile = new File(filePath);
Writer out = null;
try {
out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(outFile), "utf-8"));
} catch (Exception e1) {
e1.printStackTrace();
} try {
t.process(result, out);
out.close();
} catch (TemplateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} }
freemarker2doc.ftl
图斑编号:${tbbh!"无"}
图斑面积:${tbmj!"无"}
项目编号:${xmbh!"无"}
座落单位名称:${zldwmc!"无"}
地类名称:${dlmc!"无"}
行政区代码:${xzqdm!"无"}
转让方:${abdkSeller!"无"}
买入方:${abdkBuyer!"无"}
坡度:${abdkSlope!"无"}
坡度方差:${abdkSlopevariance!"无"}
交易前中心点x坐标:${abdkBx!"无"}
交易前中心点y坐标:${abdkBy!"无"}
交易后中心点x坐标:${abdkAx!"无"}
交易后中心点y坐标:${abdkAy!"无"}
交易前价格:${abdkBprice!"无"}
交易后面积:${abdkAarea!"无"}
交易后价格:${abdkAprice!"无"}
处理意见:${abdkOpinion!"无"}
是否处理:${abdkIssolved!"无"}
风险等级:${abdkRisklevel!"无"}
预警时间:${abdkWarningtime!"无"}
是否异常:${abdkIsnormal!"无"}
稻谷产量:${dgcl!"无"}
稻谷均价:${dgjj!"无"}
存储位置:${abdkFilepath!"无"}
效果:
使用freemarker生成html、doc文件【原创】的更多相关文章
- Java 动态生成 复杂 .doc文件
阅读目录 1.word 里面调整好排版,包括你想生成的动态部分,还有一些不用生成的规则性的文字 2. 将 word 文档保存为 xml 3.用 Firstobject free XML edito 打 ...
- springmvc+freemarker生成静态html文件
参考资料: http://mylfd.iteye.com/blog/1896501 http://www.cnblogs.com/xxt19970908/p/5553045.html 个人实践: 1. ...
- 使用freemarker生成xml模板
今天在java交流群里有个人问我如何用freemarker生成xml模板文件,可以手动配置参数,于是我到网上百度了一下.发现有一位同行的博文写的很nice,于是我就照着他的代码敲了一遍,最后实现了,本 ...
- 我是如何使用freemarker生成Word文件的?
推荐:亲身体验,数次踩坑,遂撰写此文,以备各位不时之需. 背景 一天,产品经理递给我了一份word报告,我定睛一看 这个文档有大大小小的标题层级,还有排版好的段落.各种一目了然的饼图.走势图,当然还少 ...
- FreeMarker 乱码解决方案 生成静态html文件
读取模板的时候有一个编码: Template template = this.tempConfiguration.getTemplate(templatePath,"UTF-8") ...
- FreeMarker 生成Java、mybatis文件
FreeMarker 生成Java.mybatis文件 将mysql数据库表通过FreeMarker生成对应的Java文件和对应的mybatis文件. FreeMarker是一款模板引擎: 即一种基于 ...
- 使用freemarker生成word,步骤详解并奉上源代码
1. 步骤 1. 用word编辑好模板 1. 普通字符串替换为 ${string} 2. 表格循环用标签 <#list userList as user> 姓名:${user.u ...
- FreeMarker生成word的代码
用于生成word用的freemarker工具类 package com.ucap.netcheck.utils; import java.io.File; import java.io.File ...
- 通过freemarker生成一个word,解决生成的word用wps打开有问题的问题,解决出word时中文文件名乱码问题,解决打开出word时打开的word出现问题的问题,出图片,解决动态列表
通过freemarker制作word比较简单 步骤:制作word模板.制作方式是:将模板word保存成为xml----在xml的word模板中添加相应的标记----将xml的word文件的后缀名 ...
随机推荐
- C#如何对DataTable中的数据进行条件搜索
经常遇到将数据库中的数据读取到DataTable中的时候再次对DataTable进行条件筛选,下面的筛选的一个例子: DataRow[] dr = dt.Select("token = '& ...
- Linux负载均衡软件之LVS
一. LVS简介 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是linuxvirtualserver.org ...
- JAVA 1.5 局部特性(可变参数/ANNOTATION/并发操作)
1: 可变参数 可变参数意味着可以对某类型参数进行概括,例如十个INT可以总结为一个INT数组,当然在固定长度情况下用数组是很正常的 这也意味着重点是可变,不定长度的参数 PS1:对于继承和重写我没有 ...
- [MySQL]关于Com_状态
MySQL 5.5官方文档: http://dev.mysql.com/doc/refman/5.5/en/server-status-variables.html#statvar_Com_xxx C ...
- HTTP返回码中301与302的区别
一.官方说法 301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于: 301 redirect: 301 代表永久性转移(Permanently Moved). 302 ...
- 使用struts2进行文件下载以及下载权限控制的例子
本测试有两个模块,一个是文件上上传,一个是文件下载,文件下载的时候会检查是否足有权限,如果没有,就会转发到登录页面,如果有权限,就会直接启动下载程序,给浏览器一个输出流. 下面直接上我的代码: 登录表 ...
- Flask02 路由的书写、蓝图、利用蓝图实现url前缀、利用蓝图实现子域名、访问静态文件
1 书写路由的两种方法 1.1 利用Flask实例对象的 add_url_rule 方法实现 该方法有一个必填参数,两个默认参数 · rule : 请求路径的规则 endpoint : 端点,默认值是 ...
- 关于login/interactive/no-interactive shell和profile/bash_profile/bashrc
login shell:第一次登录进系统时的shell,一般是指本机启动时的控制台shell或者ssh远程登录时的shell. interactive shell:登录以后,再打开控制台时运行的she ...
- xilinx planahead partial reconfiguration
1.为什么要使用reconfiguration? reconfiguration,即逻辑可重配,指的是FPGA的逻辑只加载指定区域(功能)的逻辑,而对除此之外的逻辑不产生影响,最常用的就是PCIe/P ...
- 39、生鲜电商平台-redis缓存在商品中的设计与架构
说明:Java开源生鲜电商平台-redis缓存在商品中的设计与架构. 1. 各种计数,商品维度计数和用户维度计数 说起电商,肯定离不开商品,而附带商品有各种计数(喜欢数,评论数,鉴定数,浏览数,etc ...