使用freemarker生成複雜的excel表格

首先這個idea和做法是來自於這位大哥的 http://blog.csdn.net/u010722643/article/details/41732607 我在公司的開發上運用了這一套,然後+上了自己的一些內容,所以希望大家如果要學習或瞭解原理的話,還是看看這位大哥的原文,蠻不錯的一篇文章,以下內容主要從實操爲主。

要實現freemarker的模板導出,是需要把excel文件轉化成模板文件,一種freemarker可以識別的格式.ftl:這裏寫圖片描述
1、選一個比較純淨的excel文件,最好是把對應的excel條數給刪掉,然後保存excel成microsoft自帶的xml格式

2、然後相對應的,把.xml的後綴改爲.ftl格式的,直接修改文件名就可以了!
3、最後就是要修改對應的內容,把無關的標籤刪掉以及增加動態的freemarker標籤,實現動態生成excel表格的功能:
對於一個.ftl文件來說,需要的是設置對應的動態生成的標籤。這裏寫圖片描述

像這裏就是醬紫,必須動態的設置對應的自增,這裏用到了JSTL的語法,對應的對象用$符號包裹,意思是循環並獲得對象。這裏寫圖片描述

4、這邊用了list來遞歸循環數據。
我這裏用了兩個workSheet來展示數據,也是這個freemarker給予我們優勢的地方,把兩個表格二合一到一個excel裏面,做法其實就是再創建一個workSheet來就行了。
我後續會加上對應的下載模板的一個鏈接,只要格式對了,就能簡單的導出excel了!
5、最後就是上代碼了!
這裏寫圖片描述

要注意的就是 這個out是Spring mvc裏面的httpResponse.getWriter()方法獲得的!

總結:誠然,用這種方式生成的excel是方便,但是總的來說,兼容性不太好,實際上這個生成的是一套xml文件,在wps和microsoft excel下打開是正常的,但是每次都會提示格式不正確(microsoft excel),但是又可以打開,而在移動端的表現也是差強人意,android可以打開,然而在IOS的情況下就打開不了,或者打開就被識別成了xml格式。
像這種情況,我還是覺得用POI去實現導出會是更好的選擇,導出生成真正的excel纔是最佳的選擇。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章