天天看點

freemarker ftl模闆_Ftl模闆生成複雜Excel表格說明程式使用的是jsp頁面寫法,循環兩次list,找到一個合并單元格的标志(本次使用的是物料名稱),判斷之前需要添加幾個臨時變量,根據變量判斷什麼時候該合并單元格以及需要合并的行數。這種寫法完全能夠滿足頁面展示的需要。靈感源自:https://www.php.cn/js-tutorial-347365.html(JSP中動态合并單元格的執行個體代碼)。

各位朋友大家好,由于工作繁忙,好久都沒有上傳工作中遇到的大坑的解決辦法了。今天給大家總結一下,ftl模闆生成複雜Excel表格之一:動态合并單元格!

本說明隻是根據目前工作需要,臨時使用freemarker的ftl模闆,如有不足之處還望各位朋友不吝賜教!

一.頁面展示部分

本次需求是需要制作采購平台的内容資料分析:包括采購員的、物料的和供應商的。采購員和供應商的資料分析十分的簡單,隻是一對一顯示,按照之前的寫法循環周遊即可;而物料的資料分析着實讓我有些犯難,主要問題就是單元格的動态合并!客戶要求的頁面顯示如下圖:

freemarker ftl模闆_Ftl模闆生成複雜Excel表格說明程式使用的是jsp頁面寫法,循環兩次list,找到一個合并單元格的标志(本次使用的是物料名稱),判斷之前需要添加幾個臨時變量,根據變量判斷什麼時候該合并單元格以及需要合并的行數。這種寫法完全能夠滿足頁面展示的需要。靈感源自:https://www.php.cn/js-tutorial-347365.html(JSP中動态合并單元格的執行個體代碼)。

客戶要求在平台頁面展示的樣式

在頁面展示中,相同物料名稱等相同項需要合并單元格,其餘項分開展示。在腦海中早就有成品樣式,但是寫法上需要能整合到目前程式代碼中。在經過一番試驗和百度後,我找到了合适的寫法,代碼非常簡單。

freemarker ftl模闆_Ftl模闆生成複雜Excel表格說明程式使用的是jsp頁面寫法,循環兩次list,找到一個合并單元格的标志(本次使用的是物料名稱),判斷之前需要添加幾個臨時變量,根據變量判斷什麼時候該合并單元格以及需要合并的行數。這種寫法完全能夠滿足頁面展示的需要。靈感源自:https://www.php.cn/js-tutorial-347365.html(JSP中動态合并單元格的執行個體代碼)。

頁面循環的前半部分

freemarker ftl模闆_Ftl模闆生成複雜Excel表格說明程式使用的是jsp頁面寫法,循環兩次list,找到一個合并單元格的标志(本次使用的是物料名稱),判斷之前需要添加幾個臨時變量,根據變量判斷什麼時候該合并單元格以及需要合并的行數。這種寫法完全能夠滿足頁面展示的需要。靈感源自:https://www.php.cn/js-tutorial-347365.html(JSP中動态合并單元格的執行個體代碼)。

頁面循環的後半部分

程式使用的是jsp頁面寫法,循環兩次list,找到一個合并單元格的标志(本次使用的是物料名稱),判斷之前需要添加幾個臨時變量,根據變量判斷什麼時候該合并單元格以及需要合并的行數。這種寫法完全能夠滿足頁面展示的需要。靈感源自:https://www.php.cn/js-tutorial-347365.html(JSP中動态合并單元格的執行個體代碼)。

二.Ftl模闆寫法部分

Ftl模闆的合并單元格與頁面是一樣的,先找到需要合并的字段,獲得合并的行數值,根據條件循環周遊即可!但是由于接觸freemarker的時間并不長,還屬于國小生階段,是以對部分生成合并單元格的屬性并不是很了解,是以耗費了些許時間。

freemarker ftl模闆_Ftl模闆生成複雜Excel表格說明程式使用的是jsp頁面寫法,循環兩次list,找到一個合并單元格的标志(本次使用的是物料名稱),判斷之前需要添加幾個臨時變量,根據變量判斷什麼時候該合并單元格以及需要合并的行數。這種寫法完全能夠滿足頁面展示的需要。靈感源自:https://www.php.cn/js-tutorial-347365.html(JSP中動态合并單元格的執行個體代碼)。

ftl模闆中的屬性及寫法

在截圖中,ExpandedRowCount表示的是下載下傳表格的行數,例如當ExpandedRowCount=“2”但表格中有3行内容,下載下傳後會打不開表格(顯示檔案已損壞);是以,一定要在生成ftl模闆後将ExpandedRowCount的值修改為較大數值。Index=“n”表示的是表格在同一行中向後移位的屬性,當它在Column中代表的是下載下傳表格打開後顯示的第n+1列之後的内容,檢視全部内容需要移動表格;在Cell中代表的是目前行中的第n列,之後會有截圖展示。

freemarker ftl模闆_Ftl模闆生成複雜Excel表格說明程式使用的是jsp頁面寫法,循環兩次list,找到一個合并單元格的标志(本次使用的是物料名稱),判斷之前需要添加幾個臨時變量,根據變量判斷什麼時候該合并單元格以及需要合并的行數。這種寫法完全能夠滿足頁面展示的需要。靈感源自:https://www.php.cn/js-tutorial-347365.html(JSP中動态合并單元格的執行個體代碼)。

ftl模闆中的臨時變量屬性

在截圖中,assign代表了臨時變量的屬性,類似于jsp中的var。将所需要的變量指派,使用方式可參照jsp頁面的判斷方法。

freemarker ftl模闆_Ftl模闆生成複雜Excel表格說明程式使用的是jsp頁面寫法,循環兩次list,找到一個合并單元格的标志(本次使用的是物料名稱),判斷之前需要添加幾個臨時變量,根據變量判斷什麼時候該合并單元格以及需要合并的行數。這種寫法完全能夠滿足頁面展示的需要。靈感源自:https://www.php.cn/js-tutorial-347365.html(JSP中動态合并單元格的執行個體代碼)。

ftl模闆中的合并單元格屬性

在截圖中,MergeDown代表了生成Excel表格中的合并單元格屬性,在需要合并行的Cell中輸入需要合并的行數-1即可;例如,如果需要合并兩行,那麼MergeDown=“1”。在合并行後邊顯示的不需要合并的行的第一行Cell中加入Index屬性,ss:Index="n",n的值為目前行的行數;例如,截圖中需要合并的行是2/3/4/5/6,從第七行開始不需要再合并,是以n=”7”,之後行中的内容就單行正常顯示。

注:當某一行内容可能會含有特殊字元時,使用?html即可解決。防止檔案下載下傳後,打開會顯示檔案已損壞。

繼續閱讀