• 使用freemarker生成html、doc文件【原创】


    语言:java

    功能:使用freemarker生成html、doc

    1、生成html

     1 public void updateuseFreemarker2html(String abdkId) {
     2             // 要填入模本的数据文件
     3                 Session session = sessionFactory.getCurrentSession();
     4                 String hql = "from AbnmDktranssupervision as abnmDktranssupervision ";
     5                 AbnmDktranssupervision result = null;
     6                 try {
     7                     // 根据id用hql语言获取一个对象的数据
     8                     result = (AbnmDktranssupervision) session.get(
     9                             AbnmDktranssupervision.class, Integer.parseInt(abdkId));
    10                 } catch (Exception e) {
    11                     e.printStackTrace();
    12                 }
    13                 
    14                 
    15                 
    16                 // 设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库装载,
    17                 // 这里我们的模板是放在cn.edu.bnu.land.common包下面
    18                 configuration = new Configuration();
    19                 configuration.setEncoding(Locale.CHINA, "utf-8");  
    21                 configuration.setClassForTemplateLoading(this.getClass(),
    22                         "/cn/edu/bnu/land/common");
    23                 Template t = null;
    24 
    25                 try {
    26                     // freemarker2html.ftl为要装载的html模板
    27                     t = configuration.getTemplate("freemarker2html.ftl");
    28                     t.setEncoding("utf-8");
    29                 } catch (IOException e) {
    30                     e.printStackTrace();
    31                 }
    32                 
    33 
    34                 // 输出文档路径及名称
    35                 Calendar ca = Calendar.getInstance();
    36                 Date date = ca.getTime();
    37                 java.text.DateFormat format2 = new java.text.SimpleDateFormat(
    38                         "yyyyMMddhhmmss");
    39                 String dateString = format2.format(date);
    40                 //文件名称
    41                 String m_fileName = result.getTbbh() + "_" + dateString + ".html";
    42                 //
    43                 String realPath=this.getClass().getClassLoader().getResource("/").getPath();
    44                 System.out.println(realPath);
    45                 int pos=realPath.indexOf("/WEB-INF");
    46                 System.out.println(pos);
    47                 realPath=realPath.substring(0, pos);
    48                 realPath=realPath+"/Upload/abnmTransSupHtml/"; 
    49                 System.out.println(realPath);
    50                 String filePath = realPath +m_fileName;
    51                 result.setAbdkFilepath("/tdlzJGXT/Upload/abnmTransSupHtml/"+m_fileName);
    53 
    54 
    55                 File outFile = new File(filePath);
    56                 Writer out = null;
    57                 try {
    58                     out = new BufferedWriter(new OutputStreamWriter(
    59                             new FileOutputStream(outFile), "utf-8"));
    60                 } catch (Exception e1) {
    61                     e1.printStackTrace();
    62                 }
    63 
    64                 try {
    65                     t.process(result, out);
    66                     out.close();
    67                 } catch (TemplateException e) {
    68                     e.printStackTrace();
    69                 } catch (IOException e) {
    70                     e.printStackTrace();
    71                 }        
    72     }
    73 
    74 }

    freemarker3html.ftl

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
     2 <html xmlns="http://www.w3.org/1999/xhtml">     
     3 <head>  
     4   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
     5 <title>异常交易预警信息</title>  
     6 </head>   
     7     
     8 <body>     
     9 <table>  
    10 <tr><td>图斑编号:</td><td>${tbbh!"无"}</td></tr>
    11 <tr><td>图斑面积:</td><td>${tbmj!"无"}</td></tr>
    12 <tr><td>项目编号:</td><td>${xmbh!"无"}</td></tr>
    13 <tr><td>座落单位名称:</td><td>${zldwmc!"无"}</td></tr>
    14 <tr><td>地类名称:</td><td>${dlmc!"无"}</td></tr>
    15 <tr><td>行政区代码:</td><td>${xzqdm!"无"}</td></tr>
    16 <tr><td>转让方:</td><td>${abdkSeller!"无"}</td></tr>
    17 <tr><td>买入方:</td><td>${abdkBuyer!"无"}</td></tr>
    18 <tr><td>坡度:</td><td>${abdkSlope!"无"}</td></tr>
    19 <tr><td>坡度方差:</td><td>${abdkSlopevariance!"无"}</td></tr>
    20 <tr><td>交易前中心点x坐标:</td><td>${abdkBx!"无"}</td></tr>
    21 <tr><td>交易前中心点y坐标:</td><td>${abdkBy!"无"}</td></tr>
    22 <tr><td>交易后中心点x坐标:</td><td>${abdkAx!"无"}</td></tr>
    23 <tr><td>交易后中心点y坐标:</td><td>${abdkAy!"无"}</td></tr>
    24 <tr><td>交易前价格:</td><td>${abdkBprice!"无"}</td></tr>
    25 <tr><td>交易后面积:</td><td>${abdkAarea!"无"}</td></tr>
    26 <tr><td>交易后价格:</td><td>${abdkAprice!"无"}</td></tr>
    27 <tr><td>处理意见:</td><td>${abdkOpinion!"无"}</td></tr>
    28 <tr><td>是否处理:</td><td>${abdkIssolved!"无"}</td></tr>
    29 <tr><td>风险等级:</td><td>${abdkRisklevel!"无"}</td></tr>
    30 <tr><td>预警时间:</td><td>${abdkWarningtime!"无"}</td></tr>
    31 <tr><td>是否异常:</td><td>${abdkIsnormal!"无"}</td></tr>
    32 <tr><td>稻谷产量:</td><td>${dgcl!"无"}</td></tr>
    33 <tr><td>稻谷均价:</td><td>${dgjj!"无"}</td></tr>
    34 <tr><td>存储位置:</td><td>${abdkFilepath!"无"}</td></tr>
    35 </table>
    36 
    37 </body>     
    38 </html> 

    效果图:

    2、生成doc

     1     // ues freemarker+xml to doc
     2     public void updateuseFreemarker2doc(String abdkId) {
     3         // 要填入模本的数据文件
     4         Session session = sessionFactory.getCurrentSession();
     5         String hql = "from AbnmDktranssupervision as abnmDktranssupervision ";
     6         AbnmDktranssupervision result = null;
     7         try {
     8             // System.out.println(hql);
     9             result = (AbnmDktranssupervision) session.get(
    10                     AbnmDktranssupervision.class, Integer.parseInt(abdkId));
    11         } catch (Exception e) {
    12             e.printStackTrace();
    13         }
    14         
    15         
    16         
    17         // 设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库装载,
    18         // 这里我们的模板是放在com.havenliu.document.template包下面
    19         configuration = new Configuration();
    20         configuration.setDefaultEncoding("utf-8");
    21         configuration.setClassForTemplateLoading(this.getClass(),
    22                 "/cn/edu/bnu/land/common");
    23         Template t = null;
    24 
    25         try {
    26             // test.ftl为要装载的模板
    27             t = configuration.getTemplate("freemarker2doc.ftl");
    28             t.setEncoding("utf-8");
    29         } catch (IOException e) {
    30             e.printStackTrace();
    31         }
    32         
    33 
    34         // 输出文档路径及名称
    35         Calendar ca = Calendar.getInstance();
    36         Date date = ca.getTime();
    37         java.text.DateFormat format2 = new java.text.SimpleDateFormat(
    38                 "yyyyMMddhhmmss");
    39         String dateString = format2.format(date);
    40         
    41         //文件名称
    42         String m_fileName = result.getTbbh() + "_" + dateString + ".doc";
    43         //
    44         String realPath=this.getClass().getClassLoader().getResource("/").getPath();
    45         //System.out.println(realPath);
    46         int pos=realPath.indexOf("/WEB-INF");
    47         //System.out.println(pos);
    48         realPath=realPath.substring(0, pos);
    49         realPath=realPath+"/Upload/abnmTransSupDoc/"; 
    50         //System.out.println(realPath);
    51         String filePath = realPath +m_fileName;
    52         result.setAbdkFilepath("/tdlzJGXT/Upload/abnmTransSupDoc/"+m_fileName);
    53         
    54         
    55         
    56 
    57 
    58         File outFile = new File(filePath);
    59         Writer out = null;
    60         try {
    61             out = new BufferedWriter(new OutputStreamWriter(
    62                     new FileOutputStream(outFile), "utf-8"));
    63         } catch (Exception e1) {
    64             e1.printStackTrace();
    65         }
    66 
    67         try {
    68             t.process(result, out);
    69             out.close();
    70         } catch (TemplateException e) {
    71             e.printStackTrace();
    72         } catch (IOException e) {
    73             e.printStackTrace();
    74         }
    75 
    76     }

    freemarker2doc.ftl

     1 图斑编号:${tbbh!"无"}
     2 图斑面积:${tbmj!"无"}
     3 项目编号:${xmbh!"无"}
     4 座落单位名称:${zldwmc!"无"}
     5 地类名称:${dlmc!"无"}
     6 行政区代码:${xzqdm!"无"}
     7 转让方:${abdkSeller!"无"}
     8 买入方:${abdkBuyer!"无"}
     9 坡度:${abdkSlope!"无"}
    10 坡度方差:${abdkSlopevariance!"无"}
    11 交易前中心点x坐标:${abdkBx!"无"}
    12 交易前中心点y坐标:${abdkBy!"无"}
    13 交易后中心点x坐标:${abdkAx!"无"}
    14 交易后中心点y坐标:${abdkAy!"无"}
    15 交易前价格:${abdkBprice!"无"}
    16 交易后面积:${abdkAarea!"无"}
    17 交易后价格:${abdkAprice!"无"}
    18 处理意见:${abdkOpinion!"无"}
    19 是否处理:${abdkIssolved!"无"}
    20 风险等级:${abdkRisklevel!"无"}
    21 预警时间:${abdkWarningtime!"无"}
    22 是否异常:${abdkIsnormal!"无"}
    23 稻谷产量:${dgcl!"无"}
    24 稻谷均价:${dgjj!"无"}
    25 存储位置:${abdkFilepath!"无"}

    效果:

  • 相关阅读:
    事件基础
    DOM
    GoWeb编程之多路复用
    GoWeb编程之HelloWorld
    Linux libtins 库安装教程
    模式串匹配KMP详解
    树的重心
    Light OJ 1064
    Light OJ 1060
    1057
  • 原文地址:https://www.cnblogs.com/fangfang01/p/3611326.html
Copyright © 2020-2023  润新知