freemaker 生成循环表格表格

</pre><pre name="code" class="html">
新建一个word另存为muban2.xml,文本编辑器打开muban2.xml后,用S{<pre name="code" class="html">biaoge.first<span style="font-family: Arial, Helvetica, sans-serif;">}代替1111111,${biaoge.second}代替2222222,${biaoge.third}代替333333</span></span>
 
</pre><pre name="code" class="html">如图所示:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAuMAAAD3CAYAAAC3pVoAAAAgAElEQVR4Ae3dWagsV/k34D7f3ytxiMOFSBBJIigiiiNoEjBonEC+D40mUVQwOAUEBxKNkePBMXECMQ4hgogm0SQoijF6oZCIOKOgKJgEEREUB9Qbb/R8/St897927e7a3b27d3d1PwX71LBWrVr1rLX7vL326uoTp8fLyLIUgVtuuWV00UUXLaUshRAgQIAAAQIEli0gVlm26NHL+z9HL0IJBAgQIECAAAECBAgsIiAYX0TNOQQIECBAgAABAgSWICAYXwKiIggQIECAAAECBAgsIiAYX0TNOQQIECBAgAABAgSWICAYXwKiIggQIECAAAECBAgsIiAYX0TNOQQIECBAgAABAgSWICAYXwKiIggQIECAAAECBAgsIiAYX0TNOQQIECBAgAABAgSWICAYXwKiIggQIECAAAECBAgsIiAYX0TNOQQIECBAgAABAgSWICAYXwKiIggQIECAAAECBAgsIiAYX0TNOQQIECBAgAABAgSWICAYXwKiIggQIECAAAECBAgsIiAYX0TNOQQIECBAgAABAgSWICAYXwKiIggQIECAAAECBAgsInCfRU4a8jm33HLLkKuv7gQIECBAgACBIwmsMha66KKLjlS3XTz5xOnxsos37p4JECBAgAABAgQIrFvANJV1t4DrEyBAgAABAgQI7KyAYHxnm96NEyBAgAABAgQIrFtAML7uFnB9AgQIECBAgACBnRUQjO9s07txAgQIECBAgACBdQsIxtfdAq5PgAABAgQIECCwswKC8Z1tejdOgAABAgQIECCwbgHB+LpbwPUJECBAgAABAgR2VkAwvrNN78YJECBAgAABAgTWLSAYX3cLuD4BAgQIECBAgMDOCgjGd7bp3TgBAgQIECBAgMC6BQTj624B1ydAgAABAgQIENhZAcH4zja9GydAgAABAgQIEFi3gGB83S3g+gQIECBAgAABAjsrIBjf2aZ34wQIECBAgAABAusWEIyvuwVcnwABAgQIECBAYGcFBOM72/RunAABAgQIECBAYN0CgvF1t4DrEyBAgAABAgQI7KyAYHxnm96NEyBAgAABAgQIrFtAML7uFnB9AgQIECBAgACBnRUQjO9s07txAgQIECBAgACBdQsIxtfdAq5PgAABAgQIECCwswKC8Z1tejdOgAABAgQIECCwbgHB+LpbwPUJECBAgAABAgR2VkAwvrNN78YJECBAgAABAgTWLSAYX3cLuD4BAgQIECBAgMDOCgjGd7bp3TgBAgQIECBAgMC6BQTj624B1ydAgAABAgQIENhZAcH4zja9GydAgAABAgQIEFi3gGB83S3g+gQIECBAgAABAjsrIBjf2aZ34wQIECBAgAABAusWEIyvuwVcnwABAgQIECBAYGcFBOM72/RunAABAgQIECBAYN0CgvF1t4DrEyBAgAABAgQI7KyAYHxnm96NE1i+wM9//vPRX/7yl5kKvvfee0fJf1zLzTffPHrDG95wrNc8rnvrXucd73jH6Nprrx3FeBOXWfvIonWfpx8ueg3nESBAYFkC//Ou8bKswpRDgMBuC3zuc58bXXjhhaP73ve+o0c/+tHNeprIf/7zn9GTnvSk0a233jo688wzR4961KOmZV3K8be+9a2jBOSf+tSnmno94xnPWEq5m1ZIAt1XvOIVo6997Wujj33sY6NnPetZo0c84hELVzMB/VOe8pTRv/71r31tGsu084Me9KCJZX/3u98d/e1vfxs97GEPO5D+8Y9/fPTKV75y9Mc//nH00Ic+dGKeAyfNcaD64Z/+9KfRP//5z9Htt98+ut/97rf068xRJVkJECAwVcDI+FQaCQQIzCtwxRVXjM4+++zRlVde2QTXfSPfD3nIQ0af//znRz/+8Y9HL3jBC0bPfe5z573czPkTGH7zm9/cy/+c5zxnb3vbNj7zmc80QXDuK23xmMc85ki3eNZZZzVBfbVpAtssn/3sZ5vyE6in7bo/55133ugJT3hC8wZoUgXuueee0fve977Rr371q0nJo7TZgx/84KnnTzypc/CTn/zk6M477xz99re/bepyzjnnNIF5J5tdAgQIrFVAML5WfhcnsH0C73nPe5qbyqjoi170ot4bfP7znz966Utf2uRJsJwAbBXLm970pqbYBOGvf/3rR5dddtnM02lWUZ9VlZlR7A984ANN8ddcc02zfuc733nky1U7pU3zxqn9Jitvqu644459PxdccMHeNQ97M3DxxRfv5W1vnHvuuU0wfskllzTTi9pp82xfeumlo0984hNNP8sbgNS/3lDMU468BAgQWJWAYHxVssolsKMCCa4yIpvlr3/966EKGR3NkukO0wK3o8x9/vSnP92M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AgHB+BY0olsgQIAAAQIECBAYpoCnqSzQbvmAhIXAtgro39vasu4rAvq3fkCAwKYJCMYXaBGPVVoAzSmDEPBJ/EE0k0ouKKB/LwjntMEIeLM5mKbaV1HTVPZx2CFAgAABAgQIECBwfAKC8eOzdiUCBAgQILA0AaOgS6NUEIG1CgjG18rv4p2hMRUAAAptSURBVAQIECBAgAABArssIBjf5dZ37wQIECBAgAABAmsVEIyviP/mm29uPrV/7bXXHrjCd7/73SbtDW94w4G0e++9t0l77nOfO1daMudPluecc86B83Igx6f9STPXSlqu3V360rp57e+GQPXt9Jluv6m+XWnZr6X6dqWlnFr60pKnzsm6+ztVfTtp3d+p6r9J6/5O9aVVvax3UyB9rN3n2q+N3f7f7uPd/t/u431p3f7f7ePtunT7+G62kLsmsGUC4yeDWOYQGDf/obmf85znnH79619/OutrrrlmX/46nnV+2kvynn322c05Obe99KXddNNNp1OvrHN+e7nrrrv20rp1v+eee/alZb+WvrTKU+t3vetdp+unjlkPU6DbRybdRbuPVb+sfO206peVlj5dfaz6Ze33peX3JPmzVL+s/Vw/16mlfg+yn+NJr6V+tw5Lq/y1rr6dtWXYArP079xhux/Xa3bdeTut2//b/biv/3fT2n28+7vR7uPd/t+9H321Wml3190+URL6Rkls5vrwyHIz6722Wk3r6JMqlBfmdjDQzpMX3/xMWnJOzp209KXlBb79H0X7/HqBbx+r7XqBr8Cojmfdl9bOl23BSldkePvz9O/c3aL9KufmWhVUZ7+99KWlj6evT1oW/Z3r+32s6+jfJTHc9bz9O3e6jtfVWfv/tPvRV4fbR49a82l9osrVN0pis9amqYx7rmUxgVOnTi12orO2RuD3v//9aBwcT7yfP/zhD83xs84660B6/dn/4Q9/+FxpyTx+gzg688wzD5yXA3fffffoEY94xMS0XPORj3zkzGn690SqnTv42c9+dvSa17xm4n3feOONo/EbuYlpt95662j85nA0qf/3pWVqS36nzj333APlZqpL+v/FF1+8L01f3cdhpyWgb7QwNnjTl/5scONsctX8gm9y6xxf3a6++urRe97znokXzPHxX3Impn3oQx9qgphJgUpfWubSJsCZFKjU/NxuoJIKJIj55je/Obrj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" alt="" />
</pre><pre name="code" class="html">muban2.xml部分代码
<span style="color:#ff0000;"><#list </span><span style="color:#006600;">biaogeList</span><span style="color:#ff0000;"> as </span><span style="color:#006600;">biaoge</span><span style="color:#ff0000;">> 表格循环开始</span>
	<span style="background-color: rgb(51, 255, 51);"><w:tr</span> wsp:rsidR="00EC2374" wsp:rsidRPr="002C1365" wsp:rsidTr="002C1365"><w:tc><w:tcPr><w:tcW
	w:w="2765" w:type="dxa" /><w:shd w:val="clear" w:color="auto"
	w:fill="auto" /></w:tcPr><w:p wsp:rsidR="002C1365" wsp:rsidRPr="002C1365"
	wsp:rsidRDefault="00EC2374"><w:pPr><w:rPr><w:rFonts w:hint="fareast" /></w:rPr></w:pPr>
	
	<w:r>
	<w:t><span style="font-size:18px;color:#009900;"><strong>${biaoge.first}</strong></span></w:t>
	</w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="2765" w:type="dxa" /><w:shd
	w:val="clear" w:color="auto" w:fill="auto" /></w:tcPr><w:p
	wsp:rsidR="002C1365" wsp:rsidRPr="002C1365" wsp:rsidRDefault="00EC2374"><w:pPr><w:rPr><w:rFonts
	w:hint="fareast" /></w:rPr></w:pPr><w:r><w:rPr><w:rFonts
	w:hint="fareast" /></w:rPr><w:t><span style="font-size:18px;color:#009900;"><strong>${biaoge.second}</strong></span></w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW
	w:w="2766" w:type="dxa" /><w:shd w:val="clear" w:color="auto"
	w:fill="auto" /></w:tcPr><w:p wsp:rsidR="002C1365" wsp:rsidRPr="002C1365"
	wsp:rsidRDefault="00EC2374"><w:pPr><w:rPr><w:rFonts w:hint="fareast" /></w:rPr></w:pPr><w:r><w:rPr><w:rFonts
	w:hint="fareast" /></w:rPr><w:t><strong><span style="font-size:18px;color:#009900;background-color: rgb(255, 255, 255);">${biaoge.third}</span></strong></w:t></w:r>
	
	</w:p></w:tc></w:tr><span style="background-color: rgb(255, 255, 255);"><span style="color:#ff6666;"></#list></span></span>
<strong><span style="font-size:18px;background-color: rgb(255, 102, 102);"></w:tbl>这是一个表格的结尾</span></strong>
<span style="font-size:18px;">BiaoGe.java</span>
<span style="font-size:18px;"></span><pre name="code" class="java">package wod;

public class BiaoGe {
	private String first;
	private String second;
	private String third;
	public String getFirst() {
		return first;
	}
	public void setFirst(String first) {
		this.first = first;
	}
	public String getSecond() {
		return second;
	}
	public void setSecond(String second) {
		this.second = second;
	}
	public String getThird() {
		return third;
	}
	public void setThird(String third) {
		this.third = third;
	}
	

}


 
<pre name="code" class="java" style="font-size: 18px;">WordHandler.java
 
<span style="font-size:18px;"></span><pre name="code" class="java">package wod;

import java.io.*;
import java.util.Map;

import freemarker.template.*;
import freemarker.template.Template;

public class WordHandler {
	private Configuration configuration = null;

	public WordHandler() {
		configuration = new Configuration();
		configuration.setDefaultEncoding("UTF-8");
	}

	private Template getTemplate(String templatePath, String templateName) throws IOException {
		configuration.setClassForTemplateLoading(this.getClass(), templatePath);
		Template t = null;
		t = configuration.getTemplate(templateName);
		t.setEncoding("UTF-8");
		return t;
	}

	public void write(String templatePath, String templateName, Map dataMap, Writer out) throws Exception {
		try {
			Template t = getTemplate(templatePath, templateName);
			t.process(dataMap, out);
		} catch (IOException e) {
			throw new Exception(e);
		} catch (TemplateException e) {
			throw new Exception(e);
		} finally {
			try {
				out.close();
			} catch (IOException e) {
				throw new Exception(e);
			}
		}
	}
}

 
<strong><span style="font-size:18px;background-color: rgb(255, 102, 102);"></span></strong><pre name="code" class="java" style="font-size: 18px; font-weight: bold;">XmlWord.java
 
<strong><span style="font-size:18px;background-color: rgb(255, 102, 102);"></span></strong><pre name="code" class="java">package wod;

import java.util.*;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class XmlWord {

	public static void main(String[] args) throws Exception {
		Map map = new HashMap();
		/*map.put("wode1", "这是基于freemarker导出成word格式。包含图片");
		map.put("wode2", "二土");
		map.put("nide1", "二土");
		map.put("nide2", "二土");*/
		
		List _biaoge =new ArrayList<>();
		for(int i=0;i<5;i++){
			BiaoGe biaoge=new BiaoGe();
			biaoge.setFirst("第一");
			biaoge.setSecond("第二");
			biaoge.setThird("第三");
			_biaoge.add(biaoge);
		}
		map.put("biaogeList", _biaoge);
		WordHandler handler = new WordHandler();
		Writer out = new OutputStreamWriter(new FileOutputStream("D:\\测试.doc"), "UTF-8");
		handler.write("/muban/doc", "muban2.xml", map, out);
	}

}


 
</pre><pre name="code" class="html">
<strong><span style="font-size:18px;background-color: rgb(255, 102, 102);">
</span></strong>
<strong><span style="font-size:18px;background-color: rgb(255, 102, 102);">
</span></strong>

SpringBoot_Freemarker生成Word_多个表格+两层嵌套循环; 步骤说明: 1.用Microsoft Office Word打开word原件;将文档中需要动态生成的内容,替换为属性名 ${name} 2.另存为,选择保存类型Word 2003 XML 文档(*.xml) 3.用Firstobject free XML editor打开文件,选择Tools下的Indent【或者按快捷键F8】格式化文件内容。左边是文档结构,右边是文档内容; 4. 文档生成后有时需要手动修改,查找第一步中设置的属性名,可能会产生类似${n.....ame}类似的样子,我们将将名字中间的标签删掉,恢复为${name} 5. word模板中有表格,需要循环的位置, 用 标签将第二对 标签(即除表头的w:tr标签后的一对)包围起来 同时表格内的属性例如${name},在这里需要修改为${user.name} (userList是集合在dataMap中的key, user是集合中的每个元素, 类似), 如图: PLUS:若表格之外还有嵌套的循环,也需要用,注意这里的标签不要和某对其他标签交叉,不可以出现这种 6. 标识替换完之后,另存为.ftl后缀文件即可。 代码里是相对有一丢丢复杂的,两层嵌套循环; 总(dataMap) deptName 部门名 list(Table)表的集合 table1(map) table-名字 ${map.table} tableName-中文名 ${map.tableName} columnCount-字段数 ${map.columnCount} recordCount-记录数 ${map.recordCount} listA-List--表格1 map.listA column Model属性——字段名 ${model.column} columnName Model属性——字段中文名 ${model.column} rate Model属性——字段占比 ${model.rate} nullValueCount Model属性——字段空值数 ${model.nullValueCount} listB-List--表格2 map.listB …… listC-List--表格3 map.listC …… table2 table-名字 ${map.table} tableName-中文名 ${map.tableName} columnCount-字段数 ${map.columnCount} recordCount-记录数 ${map.recordCount} listA-List--表格1 map.listA column Model属性——字段名 ${model.column} columnName Model属性——字段中文名 ${model.column} rate Model属性——字段占比 ${model.rate} nullValueCount Model属性——字段空值数 ${model.nullValueCount} listB-List--表格2 map.listB …… listC-List--表格3 map.listC …… table3 ……
Freemarker是一种模板引擎,常用于前后端分离项目中的视图层渲染。如果你想用它生成Word文档,特别是包含表格并能动态生成列的数据,你可以这样做: 1. 首先,在Freemarker模板文件中,创建一个表格结构,通常使用`<table>`标签定义,并可以设置表头和行数据的部分,比如`<tr>`和`<td>`标签。 ```xml <table> <thead> <tr> <th>标题1</th> <th>标题2</th> <!-- 添加更多动态列 --> <th th:text="${columnHeader}"></th> </tr> </thead> <tbody> <!-- 使用for循环遍历数据列表 --> <#list dataList as item> <tr> <td>${item.column1}</td> <td>${item.column2}</td> <!-- 使用item变量来动态显示对应列值 --> <td th:text="${item[columnName]}"></td> </tr> </#list> </tbody> </table> ``` 2. 在Java后端代码中,你需要准备一个数据模型(例如Map或自定义对象),其中包含列名(如`columnHeader`和`columnName`)以及对应的值。当处理请求时,将这些数据填充到模板引擎的变量中。 ```java Map<String, Object> dataModel = new HashMap<>(); dataModel.put("columnHeader", "动态列"); dataModel.putAll(Arrays.asList( // 根据实际数据填充每个元素 new Map.Entry<>("item1", createItemObject(column1Value, column2Value)), ...)); freemarker.template.ObjectWrapper wrapper = new DefaultObjectWrapper(); Configuration cfg = new Configuration(Configuration.VERSION_2_3_30); cfg.setClassForTemplateLoading(Thread.currentThread().getContextClassLoader(), "/"); Template temp = cfg.getTemplate("template.ftl"); Writer out = new StringWriter(); temp.process(dataModel, out); String templateContent = out.toString(); // 获取模板处理后的字符串 // 使用Apache POI库将字符串转换为Word文档 Document document = new Document(); ... // 将模板内容插入到Word文档中 document.createSection().addContent(new StringTextBody(templateContent)); // 导出Word文档 ``` 3. 最后,你可以使用Apache POI等库来读取和操作生成的Word文档,将其保存到本地、发送邮件或提供下载。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值