使用FreeMarker生成Word文件中的表格
阿新 • • 發佈:2019-01-24
一、首先還是在Word中建立模板,只需要寫好表頭。如圖1所示:
圖1
二、編寫模板,並設定插值。
<#list schoolSafetyNotifications as listKey> <w:tr w:rsidR="006332C0" w:rsidRPr="002A30AB" w:rsidTr="006332C0"> <w:trPr> <w:trHeight w:val="250"/> <w:jc w:val="center"/> </w:trPr> <w:tc> <w:tcPr> <w:tcW w:w="965" w:type="pct"/> </w:tcPr> <w:p w:rsidR="006332C0" w:rsidRPr="002A30AB" w:rsidRDefault="00DE4B05" w:rsidP="002A30AB"> <w:r w:rsidRPr="002A30AB"> <w:t>${listKey.sysSponser}</w:t> </w:r> </w:p> </w:tc> <w:tc> <w:tcPr> <w:tcW w:w="908" w:type="pct"/> </w:tcPr> <w:p w:rsidR="006332C0" w:rsidRPr="002A30AB" w:rsidRDefault="00DE4B05" w:rsidP="002A30AB"> <w:r w:rsidRPr="002A30AB"> <w:t>${listKey.count}</w:t> </w:r> </w:p> </w:tc> <w:tc> <w:tcPr> <w:tcW w:w="966" w:type="pct"/> </w:tcPr> <w:p w:rsidR="006332C0" w:rsidRPr="002A30AB" w:rsidRDefault="00CF131E" w:rsidP="002A30AB"> <w:r w:rsidRPr="002A30AB"> <w:t>${listKey.highLevelCount}</w:t> </w:r> </w:p> </w:tc> </w:tr> </#list>
三、為插值賦值
List<SchoolSafetyNotification> schoolSafetyNotifications = new ArrayList<>(); safetyJournalUserUniteds = safetyJournalDAO.findByjournalId(journal.getId());//獲得所有有漏洞的二級機構 for(int i = 0;i<safetyJournalUserUniteds.size();i++) { SchoolSafetyNotification s = new SchoolSafetyNotification(); s.setSysSponser(safetyJournalUserUniteds.get(i).getSysSponser()); s.setHighLevelCount(String.valueOf(safetyJournalUserUniteds.get(i).getHighLevelCount())); s.setCount(String.valueOf(safetyJournalUserUniteds.get(i).getSafetyJournal().getCount())); schoolSafetyNotifications.add(s); } return schoolSafetyNotifications;
四、這裡分兩種情況,如果所有的二級機構都沒有漏洞,則表格不顯示,如果二級機構有漏洞,則顯示錶格。所以需要在模板檔案中新增if條件。
<#if (schoolSafetyNotifications?size > 0)>
……
</#if>
如果不符合if條件,則出現如圖2所示結果:
圖2
如果符合if條件,則出現如圖3所示結果:
圖3