Freemaker合并单元格功能实现

1、功能需求

Freemaker合并单元格功能实现_第1张图片

这是实现的效果,主要的问题是第一列相同的数据合并!!

2、实现思路

合并行需要的属性值:

3、数据封装

public List> queryChecklistUpload(Map params) {
		List> list = checklistMapper.queryChecklistUpload(params);
		String start = "";
		String end = "";
		String tmp = (String) list.get(0).get("id");
		for (int i = 0; i < list.size(); i++) {
			if (i == 0) {
				list.get(i).put("start", start);
				continue;
			}else if(!list.get(i).get("id").equals(tmp)){
				list.get(i).put("start", start);
				list.get(i-1).put("end", end);
			}else if(list.get(i).get("id").equals(tmp)){
				list.get(i).put("end", end);
			}
			if(i == list.size()-1){
				list.get(i).put("end", end);
				continue;
			}
			tmp = (String) list.get(i).get("id");
		}
		return list;
	}

4、freemaker获取数据并遍历

**<#list checklist as checks>


				${checks.start!''}

                 ${checks.end!''}
 ${checks.testItem}
 **

${checks.checkPoint}${checks.preTestResult}${checks.chargeStaff}

其中:
获取数据并遍历:<#list checklist as checks>
防止数据为null程序报错: ${checks.end!’’}

切记:
1、如果合并三行的相同数据,不是在第一行的位置添加 在第三行的位置添加,本人踩坑体会。
要在第一行添加,要合并的第二行及第三行添加 ,否则合并失败!!!
2、合并标签放置的位置是有限制的:



							${checks.start!''}
							${checks.end!''}

${checks.testItem}

要在标签内,起始标签可放在同一位置!

另外 ,列的合并请参考文章: https://blog.csdn.net/wp4862/article/details/82149451

你可能感兴趣的:(踩坑总结)