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&