使用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文件的后缀名 ...
随机推荐
- java代码JFrame练习
总结: package com.da; import java.awt.Button; import java.awt.Color; import java.awt.FlowLayout; impor ...
- 一:安装Scala
Scala是一种类似Java的纯面向对象的函数式编程语言,由于函数具有明确的确定输入对确定输出的关系,所以适合推理和计算,一切函数都可以看成一系列的计算组成,另外由于Scala函数是没有副作用和透明的 ...
- 3 K8s安裝ELK+filebeat
1 Filebeat: apiVersion: v1 kind: Service metadata: name: XX spec: ports: - name: http port: targetPo ...
- 忘记mysql密码,但是可以用navicat修改MySQL密码
1.首先:要知道你的账户 2.打开可以连接的navicat,在查询语句页面,输入以下操作,就可以修改成功密码了
- PHP二维数组,根据多个字段来排序
如果是最最常见的二维数组排序, 大多数情况下也只用到二维: 用php内置函数 array_multisort( ) 是最简单的: <?php 假设, $arr 是一个二维数组, $arg1是取 ...
- CentOS 7 安装 Zabbix 3.0
CentOS7搭建Zabbix 一.安装数据库: 1. 安装数据库:sudo yum grouinstall mariadb –y 2. 启动数据库:sudo systemctl start ...
- mongodb-help功能
mongo-help功能 version:2.6.12下面是示例: > help db.help() help on db methods db.m ...
- p4180 次小生成树
传送门 分析: 次小生成树的求法有两种,最大众的一种是通过倍增LCA找环中最大边求解,而这里我介绍一种神奇的O(nlogn) 做法: 我们先建立最小生成树,因为我们用kruskal求解是边的大小已经按 ...
- lsnrctl start错误Linux Error: 29: Illegal seek (翻译:非法谋取)
现在,想不起来为什么ORACLE的监听,怎么就突然无法起来了呢. 好吧,问题反正就是发生了. lsnrctl start 遇到如下错误, LSNRCTL for Linux: Version 10.2 ...
- 【Qt官方例程学习笔记】Getting Started Programming with Qt Widgets
创建一个QApplication对象,用于管理应用程序资源,它对于任何使用了Qt Widgets的程序都必要的.对于没有使用Qt Widgets 的GUI应用,可以使用QGuiApplication代 ...