1. 程式人生 > >使用FreeMarker生成Word文件中的表格

使用FreeMarker生成Word文件中的表格

    一、首先還是在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