语言: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. 多校联合训练&hdu5791 Two

    hdu5791 dp[i][j]表示的是序列A前i个数字和序列B前j个数字的公共子序列的总个数,那么的dp公式就可以这么表示 理解一下此公式若最尾部的a[i]和b[j]相等的话,那么单独的a[i]和b ...

  2. 手把手教你写Kconfig---基于tiny4412开发板

    转自:http://blog.csdn.net/morixinguan/article/details/54744237 今天,我就来教大家写写最简单的Kconfig,什么是Kconfig? 我们配置 ...

  3. 【转】Ruby on Rails中select使用方法

    在Ruby on Rails中真的有一堆Select helper可以用,我们经常容易混淆.常见的有三个..select, select_tag, collection_select(其余的什么sel ...

  4. UML核心元素--参与者

    定义:参与者是在系统之外与系统交互的某人或某事物.参与者在建模过程中处于核心地位. 1.系统之外:系统之外的定义说明在参与者和系统之间存在明确的边界,参与者只能存在于边界之外,边界之内的所有人和事务都 ...

  5. C#使用NPOI将DataGridView内数据写入电子表格Excel

    NPOI能够在用户没有安装office的情况下读写office文件,包括.xls/.doc/.ppt等类型的文件.本文介绍的是使用NPOI库内的函数读写Excel(.xls)内的内容.在使用NPOI之 ...

  6. springmvc chrome jsonviewer 一起请求 重复提提交 controller重复执行 2次执行

    情况一: springmvc chrome jsonviewer 一起请求 重复提提交 controller重复执行 2次执行 Chrome浏览器地址栏访问接口url,重复请求问题解决   不论刷新还 ...

  7. “在注释中遇到意外的文件结束”--记一个令人崩溃的bug

    下午写程序,写的好好的,突然报错"在注释中遇到意外的文件结束". 下面是官方给出的错误原因是缺少注释终结器 (* /). // C1071.cpp int main() { } / ...

  8. sql语句去重 最后部分没看 看1 有用

    一 数据库 1.常问数据库查询.修改(SQL查询包含筛选查询.聚合查询和链接查询和优化问题,手写SQL语句,例如四个球队比赛,用SQL显示所有比赛组合:举例2:选择重复项,然后去掉重复项:) 数据库里 ...

  9. Umbraco back office 中form显示不出来的问题

    问题纠结了好久,没找到什么原因,具体就是在back office中,form显示不出来.如下: 按下F12,在chrome 的developer tools中发现如下错误 找了半天不知道原因,后来看到 ...

  10. Vim7.4 配置项列表

    vim所有的配置项如下,可以根据自己的需要进行配置,每个配置项的详细信息 可以在vim里面使用:help option-name # 配置项名称 缩写词 简要说明 'aleph' 'al' Aleph ...