1. 程式人生 > >freemarker 模板生成 檔案

freemarker 模板生成 檔案

最近公司比較忙,好久沒寫文章了,今天來一篇。

要生成的目標java檔案

package com.cs.qdog.swift.objects;  
  
public class F32B {  
  
    private Double amount;  
    private String currency;  
  
    public Double getAmount() {  
        return amount;  
    }  
  
    public void setAmount(Double amount) {  
        this.amount = amount;  
    }  
  
    public String getCurrency() {  
        return currency;  
    }  
  
    public void setCurrency(String currency) {  
        this.currency = currency;  
    }  
}  

模板檔案SwiftFieldClass.txt(可以是任意格式的檔案)

package com.cs.qdog.swift.objects;  
  
public class ${class} {  
  
  <#list properties as prop>  
    private ${prop.type} ${prop.name};  
  </#list>  
  
  <#list properties as prop>  
    public ${prop.type} get${prop.name?cap_first}(){  
      return ${prop.name};  
    }  
    public void set${prop.name?cap_first}(${prop.type} ${prop.name}){  
      this.${prop.name} = ${prop.name};  
    }  
  </#list>  
  
  
}  
 

java 程式碼
    package com.cs.qdog.swift.objects;  
      
    import java.io.File;  
    import java.io.IOException;  
    import java.io.OutputStreamWriter;  
    import java.io.Writer;  
    import java.util.Collection;  
    import java.util.HashMap;  
    import java.util.HashSet;  
    import java.util.Map;  
      
    import freemarker.template.Configuration;  
    import freemarker.template.DefaultObjectWrapper;  
    import freemarker.template.Template;  
    import freemarker.template.TemplateException;  
      
    public class GenObjects {  
      
        public static void main(String[] args) throws IOException,  
                TemplateException {  
      
            /* ------------------------------------------------------------------- */  
            /* You usually do it only once in the whole application life-cycle: */  
      
            /* Create and adjust the configuration */  
            Configuration cfg = new Configuration();  
            cfg.setDirectoryForTemplateLoading(new File(  
                    "D:/Temp/EclipseWorkSpace/GenSwiftFields/templates"));  //模板父路徑
            cfg.setObjectWrapper(new DefaultObjectWrapper());  
      
            /* ------------------------------------------------------------------- */  
            /* You usually do these for many times in the application life-cycle: */  
      
            /* Get or create a template */  
            Template temp = cfg.getTemplate("SwiftFieldClass.");  //模板檔案,相對於setDirectoryForTemplateLoading設定的路徑
      
            /* Create a data-model */  
            Map<String, Object> root = new HashMap<String, Object>();  //注意必須有一個根結點 data-model
            root.put("class", "F32B");  
            Collection<Map<String, String>> properties = new HashSet<Map<String, String>>();  
            root.put("properties", properties);  
      
            /* subfield 1: currency */  
            Map<String, String> currency = new HashMap<String, String>();  
            currency.put("name", "currency");  
            currency.put("type", "String");  
            properties.add(currency);  
      
            /* subfield 2: amount */  
            Map<String, String> amount = new HashMap<String, String>();  
            amount.put("name", "amount");  
            amount.put("type", "Double");  
            properties.add(amount);  
      
            /* Merge data-model with template */  
            String targetPath="***";//生成的目標檔案的父目錄
            String targetFile="****";//生成目標檔案的名字
            if (!targetPath.exists())
                targetPath.mkdirs();
             File targetFile = new File(targetBasePath,targetFileName);
                if (!targetFile.exists())
                    targetFile.createNewFile();
            Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(targetFile), "UTF-8"));  
            temp.process(root, out);  
            out.flush();  
        }  
      
    }  


相關推薦

freemarker 模板生成 檔案

最近公司比較忙,好久沒寫文章了,今天來一篇。 要生成的目標java檔案 package com.cs.qdog.swift.objects; public class F32B { private Double amount; pri

freemarker模板生成word檔案

1、用word文件製作好模板 ceshi.docx 2、將ceshi.docx檔案另存為ceshi.xml檔案 ${name}、${tel}、${address}被拆分了,用notpad++開啟ceshi.xml檔案,將被拆分的資料重新修改,修改完以後將檔案另存為ftl

使用freemarker模板生成Word文件和HTML

注:該文件是參考某個大佬的資料,根據自己的需要修改的,具體是哪位大佬的忘了,如果作者自己看到需要加明出處的,請留言你的部落格地址 業務處理: 1,在業務中建立List<Map<String, Object>> data = new ArrayList<Map<Strin

java利用Freemarker模板生成docx格式的word文件

之前寫過一篇利用Freemarker模板生成doc的部落格,不過那個部落格有點缺陷,生成的word佔用的空間很大,幾百頁的word有將近100M了。所以,後面需求必須是生成的docx文件,結果匯出後正常才幾M,昨天花了一天的時間實現。 具體思路 1.把docx文件修改為ZIP格式(修改

使用freemarker模板生成word文件

專案中最近用到這個東西,做下記錄。 如下圖,先準備好一個(office2003)word文件當做模板。文件中圖片、姓名、性別和生日已經使用佔位符代替,生成過程中將會根據實際情況進行替換。 然後將word文件另存為“Word XML文件” 使用xml編輯器開啟test.xml,

java利用Freemarker模板生成格式友好的doc文件(這種方式不支援docx)

近期做專案需要生成複雜的帶格式的word文件,選擇過poi和itext來寫文件,發現文件生成沒問題,但是格式不好調,後來就想要利用freemarker模板來生成,效果還可以,今天就貼出來。 主要分為

移動端無法開啟FreeMarker模板生成的Word文件

FreeMarker通過xml結構生成Word文件,在移動端開啟卻顯示的是xml文件,PC開啟正常,而PC上使用Office或者Wps開啟這個文件,另存為一個新的Word文件,在移動端開啟就正常了。順著這個思路,找到一個解決方案,使用JACOB - Java C

freemarker + ItextRender 根據模板生成PDF檔案

1. 製作模板<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> &

FreeMarker之根據模板生成Java代碼

cfile 2.0 [] proc string http cati port nal FreeMarker根據模板生成Java代碼,光這句話,大家想必也知道它的應用了,比如流行的DRY原則,該原則的意思,可簡單概述為"不要寫重復的代碼"。 比如Java中三層架構,數據訪問

使用freemarker模板引擎生成word文檔的開發步驟

ring 進度 ram ted 彈出 模板引擎 adf XML style 1、準備模板文檔,如果word文檔中有表格,只保留表頭和第一行數據;2、定義變量,將word文檔中的變量用${var_name}替換;3、生成xml文件,將替換變量符後的word文檔另存為xml文件

根據模板生成HTML檔案

場景描述: 最近寫一個部落格系由於需要批量生成網頁,所以寫這麼一個小功能 直接上程式碼了 html模板(根據需要自己隨便寫,這這是個測試) <!DOCTYPE html> <html> <head> <meta charse

freemarker模板檔案(*.ftl)的基本組成部分

1. 文字:直接輸出的內容部分 2. 註釋:不會輸出的內容,格式為<#-- 註釋內容 --> 3. 取值(插值):代替輸出資料模型的部分,格式為${資料模型}或#{資料模型} 4. ftl指令:Freemarker指令,類似於HTML標記。

vue-cli生成模板各個檔案詳解(轉) vue-cli腳手架中webpack配置基礎檔案詳解

vue-cli腳手架中webpack配置基礎檔案詳解 一、前言 原文:https://segmentfault.com/a/1190000014804826 vue-cli是構建vue單頁應用的腳手架,輸入一串指定的命令列從而自動生成vue.js+wepack的專案模板。這其中webpack發揮了很大

常用工具類--freemarker生成檔案

freemarker使用   引入包 import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateExcepti

javaEE Freemarker模板引擎,Freemarker與Spring的整合,生成靜態頁面

applicationContext.xml(Spring配置檔案): <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/sche

Java根據Word模板生成Word文件(Freemarker實現)

public class WordExportUtil { private static Configuration configuration; static { configuration = new Configuration(); configur

T4模板生成檔案使用

<#@ template language="C#" debug="false" hostspecific="true"#> <#@ include file="EF.Utility.CS.ttinclude"#><# //引用模板檔案#> <#@ outp

HTML 模板+freemarker渲染 生成PDF(一)

最近專案中要把相關資料匯出為PDF檔案,總結下自己寫這個功能遇到的種種問題 先給出個大概的框架 package com.xsm; import java.util.HashMap; import java.util.Map; import org.ju

根據xlsx模板生成excel資料檔案傳送郵件程式碼

package mail; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.

使用 poi 根據 word 模板生成 word 檔案

本例子是一個 maven 專案,要引入 poi 的依賴片段如下: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi&