栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA对树状结构数据导出Excel自动合并同级内容代码

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA对树状结构数据导出Excel自动合并同级内容代码

针对树形结构数据进行Excel导出并进行合并处理
  • 针对树形结构数据的Excel导出的
    • 1 需求
    • 1 对象结构
    • 2 对数据进行树形结构数据组合并且进行计算工具类
    • 3 对数据库的数据进行处理(==全文最重要的数据处理方法思路逻辑==)
    • 4 递归查询 父节点信息
    • 5 对数据写入Excel,
    • 6 自动合并代码参考我的上一篇文章有详细的代码

针对树形结构数据的Excel导出的 1 需求
		针对树形结构的数据进行Excel导出并对数据进行合并单元格的操作
1 对象结构
import java.util.ArrayList;
import java.util.List;


@Data
public class ElectricTechnologyTest extends baseEntity {

	
	private String name;

	
	private String parentId;

	
	private String serialNumber;

	private String deptName;
	private String roomTypeName;


	
	private Integer isLast;

	
	private Integer level;

	
	private Integer orderNumber;

	
	private String updateUserName;
	
	private String professionId;
	private String professName;

	
	private List children = new ArrayList();


}
2 对数据进行树形结构数据组合并且进行计算工具类
1 获取数据
List collect = this.list().stream().map(v -> {
			ElectricTechnologyTest vo = new ElectricTechnologyTest();
			BeanUtil.copyProperties(v, vo);
			return vo;
		}).collect(Collectors.toList());
3 对数据库的数据进行处理(全文最重要的数据处理方法思路逻辑)
3.1 计算出末级的数据,没有子集或者是lsLast = 1的数据,进行计算,在这个计算中,需要对合并好的数据进行计算处理
	private static List ids = new ArrayList<>();


	private static void getTheAfterTreatmentData(List list){
		if (list!=null) {
			for (int i = 0; i < list.size(); i++) {
				ElectricTechnologyTest vo = list.get(i);
				List children = vo.getChildren();
				//拿到最末级的数据的ID,然后需要对这些数据进行反推处理
				if (!DevUtil.list(children)){
					ids.add(vo.getId());
				}
				electricTechnologyMapper.updateTheData(vo.getId(),vo.getSerialNumber());
				getTheAfterTreatmentData(children);
			}
		}
	}
4 递归查询 父节点信息
	
	 		Map collect = service.list().stream().collect(Collectors.toMap(ElectricTechnology::getId, v -> v));

	public static String getParentName(String id,Map map) {
		ElectricTechnology entity = map.get(id);
		if (entity != null) {
			String configName = entity.getRemark() + "," + entity.getName() + ",";
			String returnConfigName = getParentName(entity.getParentId(),map);
			return returnConfigName + configName;
		} else {
			return "";
		}
	}
5 对数据写入Excel,
List>

这样的数据需要进行二次遍历写入对应的Excel,然后对数据进行合并操作就可以达成自己想要的树形结构数据导出Excel自动合并同级相同内容的操作。

for (int i = 0; i < lists.size(); i++) {
			SXSSFRow row0 = sheet.createRow(i);
			for (int k = 0; k < lists.get(i).size(); k++) {
				SXSSFCell cell = row0.createCell(k);
				cell.setCellValue(lists.get(i).get(k));
				cell.setCellStyle(style);
			}
		}
		
		for (int i = 0; i < lists.get(0).size(); i++) {
			OfficeUtil.toMergeTheStand(sheet,style,0,i);
		}
6 自动合并代码参考我的上一篇文章有详细的代码

效果

自动合并改列的数据文章链接

最后感谢各位观看 也可以多多交流QQ 954248544

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/445257.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号