语言: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文件【原创】的更多相关文章

  1. Java 动态生成 复杂 .doc文件

    阅读目录 1.word 里面调整好排版,包括你想生成的动态部分,还有一些不用生成的规则性的文字 2. 将 word 文档保存为 xml 3.用 Firstobject free XML edito 打 ...

  2. springmvc+freemarker生成静态html文件

    参考资料: http://mylfd.iteye.com/blog/1896501 http://www.cnblogs.com/xxt19970908/p/5553045.html 个人实践: 1. ...

  3. 使用freemarker生成xml模板

    今天在java交流群里有个人问我如何用freemarker生成xml模板文件,可以手动配置参数,于是我到网上百度了一下.发现有一位同行的博文写的很nice,于是我就照着他的代码敲了一遍,最后实现了,本 ...

  4. 我是如何使用freemarker生成Word文件的?

    推荐:亲身体验,数次踩坑,遂撰写此文,以备各位不时之需. 背景 一天,产品经理递给我了一份word报告,我定睛一看 这个文档有大大小小的标题层级,还有排版好的段落.各种一目了然的饼图.走势图,当然还少 ...

  5. FreeMarker 乱码解决方案 生成静态html文件

    读取模板的时候有一个编码: Template template = this.tempConfiguration.getTemplate(templatePath,"UTF-8") ...

  6. FreeMarker 生成Java、mybatis文件

    FreeMarker 生成Java.mybatis文件 将mysql数据库表通过FreeMarker生成对应的Java文件和对应的mybatis文件. FreeMarker是一款模板引擎: 即一种基于 ...

  7. 使用freemarker生成word,步骤详解并奉上源代码

    1.   步骤 1.    用word编辑好模板 1. 普通字符串替换为 ${string} 2. 表格循环用标签 <#list userList as user> 姓名:${user.u ...

  8. FreeMarker生成word的代码

     用于生成word用的freemarker工具类 package com.ucap.netcheck.utils; import java.io.File; import java.io.File ...

  9. 通过freemarker生成一个word,解决生成的word用wps打开有问题的问题,解决出word时中文文件名乱码问题,解决打开出word时打开的word出现问题的问题,出图片,解决动态列表

     通过freemarker制作word比较简单 步骤:制作word模板.制作方式是:将模板word保存成为xml----在xml的word模板中添加相应的标记----将xml的word文件的后缀名 ...

随机推荐

  1. PAT1106(BFS)

    PAT 1106 思路 BFS用在tree上,这一个题里主要关注的是用vector去保存每一个节点所连接的子节点,当BFS 时,一旦发现该节点下面没有子节点,这一层一定是最短的路径,然后用当前的层数去 ...

  2. 办公软件-Excel:Microsoft Office Excel 2003百科

    ylbtech-办公软件-Excel:Microsoft Office Excel 2003百科 Microsoft® Office Excel 2003 是一种电子表格程序,可提供对于 XML 的支 ...

  3. 数组排序----Demo

    //选择排序,分为简单选择排序.树形选择排序(锦标赛排序).堆排序 此算法为简单选择排序 public static void selectSort(int[] a){ for(int i=0;i&l ...

  4. Web Form要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping。”的解决办法。

    1.先将aspnet.scriptmanager.jquery.dl 复制到bin  (网站根目录下的bin文件夹找不到,看看下面的图片中点击[显示所有文档])  文件夹下.   2.在网站根目录下s ...

  5. 多对多 hibernate映射

    数据库: create table EMPLOYEE ( EMPID NUMBER(6) not null, EMPNAME VARCHAR2(32) ) alter table EMPLOYEE a ...

  6. mysql--二进制日志(bin-log)

    一.设置二进制日志 进制日志记录了所有的DDL和DML,但不包括各种查询.通过二进制日志,可以实现什么效果呢?二进制日志文件可以[实现灾难数据恢复],另外可以应用到[mysql复制数据同步].二进制日 ...

  7. Flask09 原始输出、转义、XSS攻击、过滤器???

    1 怎么在jinja模板中原始输出模板语法 1.1 用双引号引起来后放到 {{ }} 中 例如 {{ "{{}}" }} 输出 1.2 利用raw 例如 {% raw %} {% ...

  8. [原创]SQL 把表中某一个列按照逗号拼接成一行

    在我们开发的过程中,难免遇到一种场景,把某个表中的的某个列的值拼接成用逗号隔开的一行数据 如图:我们把UserId列拼接成一行数据 -------> 为此我写了一个存储过程来解决此类问题. -- ...

  9. JavaScript中创建对象的三种模式

    JS中,便于批量创建对象的三种模式: 1.工厂模式:用一个函数封装创建对象的细节,传入必要的参数,在函数内部new一个对象并返回. 缺点:创建的对象无法识别类型(全是Object) 2.构造函数模式: ...

  10. 9. CTF综合靶机渗透(二)

    靶机说明 Welcome to the world of Acid. Fairy tails uses secret keys to open the magical doors. 欢迎来到酸的世界. ...