使用freemarker利用模板匯出文件

2021-10-01 21:28:36 字數 2458 閱讀 7808

本文旨在對在使用freemarker建立模板匯出文件是遇到的一些錯誤及解決方案做個記錄。

現在網路上有很多這樣的**,隨便一查就有很多。但是為了方便大家使用我這裡就在網上隨便摘抄一些,方便使用。

首先建立模板。

1)使用office軟體建立乙個文件,文件設定好自己的樣式、顏色等格式。

2)在你要插入值的地方定義好佔位符,佔位符格式:$

ps 這個變數的名字你要記好,這是你在使用模板的時候會使用到。

如圖:3)將製作好的模板另存為xml格式

如圖:4)將另存的檔案修改字尾為***.ftl

如圖:5)到這一步,模板就做好了。

編寫**

public

void

export******word()

throws exception的***一致

mapdatamap =

newhashmap

(); datamap.

put(

"username"

,"張三"

);

datamap.

put(

"***"

,"男");

//configuration用於讀取ftl檔案

configuration configuration =

newconfiguration()

; configuration.

setdefaultencoding

("utf-8");

/*以下是兩種指定ftl檔案所在目錄路徑的方式, 注意這兩種方式都是

* 指定ftl檔案所在目錄的路徑,而不是ftl檔案的路徑

*///指定路徑的第一種方式(根據某個類的相對路徑指定)

"");

//指定路徑的第二種方式,我的路徑是c:/a.ftl

configuration.

setdirectoryfortemplateloading

(new

file

("c:/"))

;// 輸出文件路徑及名稱

file outfile =

newfile

("d:/test.doc");

//以utf-8的編碼讀取ftl檔案

template t = configuration.

gettemplate

("a.ftl"

,"utf-8"

);

writer out =

newbufferedwriter

(new

outputstreamwriter

(new

fileoutputstream

(outfile)

,"utf-8"),

10240

);

t.process

(datamap, out)

; out.

close()

;}

上面 這部分**摘自

以上整個流程算是完成了,但是在此期間我遇到了一些問題,我在網上找了好久才依稀找到一些解決方法。現在為了方便我把問題及解決方案發出來,便於大家查閱。

常見問題,模板報錯

出現此問題的原因主要是你的模板中有內部出現問題。

我出現這個問題的原因是:

從圖中可以看出我之前寫的佔位符在這裡被拆分了,所有我們要去修改我們的模板(並不是修改原始的都doc或docx,而是我們儲存好的ftl也就是xml檔案。)直接使用編輯工具(我是用的nodepad++)開啟,修改。修改完成以後如圖

然後依次將你的所有佔位符進行修正。然後再次匯出。

最後貼出來乙個方法,物件轉map的方法,因為使用模板的時候用的就乙個map

public

static map ******object2map

(object obj)

throws illegalacces***ception, illegalargumentexception, invocationtargetexception, introspectionexception

// 得到property對應的getter方法

method getter = property.

getreadmethod()

; object value = getter.

invoke

(obj)

; map.

put(key, value);}

return map;

}

Freemarker使用入門 servlet

freemarker是開源的模板框架。對於它的介紹網上已經很多了。詳情可參考主頁 4.在web inf目錄下建一資料夾templates,然後在這個資料夾裡面新建乙個模板檔案test.ftl 5.建乙個helloservlet protected void dopost httpservletreq...

FreeMarker的使用步驟

原始freemarker的用法 configuration config new configuration configuration.getversion 這裡設定的是模版目錄 config.setdirectoryfortemplateloading new file 模板位址 config....

使用freemarker模板生成word文件

專案中最近用到這個東西,做下記錄。如下圖,先準備好乙個 office2003 word文件當做模板。文件中 姓名 性別和生日已經使用佔位符代替,生成過程中將會根據實際情況進行替換。然後將word文件另存為 word xml文件 完成後,將test.xml重新命名為test.ftl。接下來,實現 如下...