使用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文件的后缀名 ...
随机推荐
- JVM体系结构之六:堆Heap之2:新生代及新生代里的两个Survivor区(下一轮S0与S1交换角色,如此循环往复)、常见调优参数
一.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能.你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我 ...
- 测试-Swagger:目录
ylbtech-测试-Swagger:目录 1.返回顶部 1. https://swagger.io/ 2.Swagger Editor http://swagger.io/swagger-edito ...
- 字符编码ASCII、Unicode、GB
计算机的存储都是二进制的,那么我们平时看到的各种字符都需要通过按照一定的格式转换成为二进制才能在被计算机识别与处理.这个过程便成为编码.常见的编码方式有ASCII.Unicode.GB2312等. 1 ...
- Material使用06 自定义主题、黑夜模式\白天模式切换
需求: 1 不使用materil依赖内建的主题,使用自己创建的主题 2 利用自己创建的主题实现白天模式和黑夜模式 1 自定义主题 1.1 创建自定义主题文件 them.scss // 引入materi ...
- lyui 列表 上传
1.js layui.use(['table', 'element', 'laydate', 'layer','upload'], function () { var table = layui.ta ...
- Spring 框架学习整理
JDBC操作数据库的基本入门中存在什么问题? * 导致驱动注册两次是个问题,但不是严重的. * 严重的问题:是当前类和mysql的驱动类有很强的依赖关系. * 当我们没有驱动类的时候 ...
- R语言:文本(字符串)处理与正则表达式
R语言:文本(字符串)处理与正则表达式 (2014-03-27 16:40:44) 转载▼ 标签: 教育 分类: R 处理文本是每一种计算机语言都应该具备的功能,但不是每一种语言都侧重于处理文本.R语 ...
- rlwrap:让控制台程序使用input.rc里的设置
习惯了vi模式,在bash里配置input.rc可以使平时命令行操作都使用vi习惯,翻页和跳动光标都很方便 但是当运行一些交互式程序时,比如redis-cli,lua等,它们却不按input.rc的配 ...
- charles解决相应乱码问题
Charles.ini 文件手动添加vmarg.5=-Dfile.encoding=UTF-8
- svn的revert、checkout、clean up、setting
svn revert 描述恢复所有对文件和目录的修改,并且解决所有的冲突状态. svn revert不会只是恢复工作拷贝中一个项目的内容,也包括了对属性修改的恢复.最终,你可以使用它来取消所有已经做过 ...