当前位置: 首页 > wzjs >正文

无锡网站建设价格最优成都有哪些好玩的地方和景点

无锡网站建设价格最优,成都有哪些好玩的地方和景点,东莞房价2023年最新房价,西部数码备案域名购买EasyExcel构建复杂多级表头 在Java开发中,处理Excel文件时,构建复杂的多级表头是一项常见且具有挑战性的任务。本文将详细介绍如何通过自定义的HeaderBuilder类结合EasyExcel库,轻松实现多级表头的构建,并将数据写入Excel文件。 …

EasyExcel构建复杂多级表头

在Java开发中,处理Excel文件时,构建复杂的多级表头是一项常见且具有挑战性的任务。本文将详细介绍如何通过自定义的HeaderBuilder类结合EasyExcel库,轻松实现多级表头的构建,并将数据写入Excel文件。

一、整体思路

我们的目标是创建一个灵活、可扩展的方式来构建多级表头。为此,我们设计了一个HeaderBuilder类,它使用树形结构来表示表头信息。每个表头节点(HeaderNode)可以有多个子节点,从而形成多级结构。最终,通过遍历这个树形结构,生成适用于EasyExcel的嵌套列表形式的表头数据。

二、关键代码实现

(一)HeaderNode类

package com.xtl.utils;import lombok.Data;import java.util.LinkedList;
import java.util.List;@Data
public class HeaderNode {private String title;private List<HeaderNode> children;public HeaderNode(String title) {this.title = title;this.children = new LinkedList<>();}public HeaderNode addChild(HeaderNode child) {children.add(child);return this;}
}

通过addChild方法,可以方便地为当前节点添加子节点,构建树形结构。

(二)HeaderBuilder类

package com.xtl.utils;import java.util.*;public class HeaderBuilder {private final HeaderNode root;private HeaderBuilder(HeaderNode root) {this.root = root;}public static HeaderBuilder create(HeaderNode... headerNodes) {HeaderNode root = new HeaderNode("ROOT"); // 虚拟根节点for (HeaderNode node : headerNodes) {root.addChild(node);}return new HeaderBuilder(root);}/*** 生成多级表头结构** @return 适用于EasyExcel的嵌套表头结构*/public List<List<String>> build() {List<List<String>> result = new ArrayList<>();traverse(new LinkedList<>(), root, result);return result;}private void traverse(LinkedList<String> currentPath, HeaderNode node, List<List<String>> result) {if (node.getChildren() == null || node.getChildren().isEmpty()) {result.add(new ArrayList<>(currentPath));return;}for (HeaderNode child : node.getChildren()) {currentPath.add(child.getTitle());traverse(currentPath, child, result);currentPath.removeLast();}}
}

HeaderBuilder类负责管理和生成表头结构。它包含一个私有的root属性,指向表头树形结构的根节点。create方法是一个静态工厂方法,用于创建HeaderBuilder实例。它接受多个HeaderNode作为参数,并将这些节点添加到虚拟的ROOT根节点下。

build方法是核心方法,它通过调用私有的traverse方法,对表头树形结构进行深度优先遍历。在遍历过程中,traverse方法将当前路径上的节点名称收集到currentPath中。当遇到叶子节点(没有子节点的节点)时,将currentPath的内容添加到结果列表result中,最终生成适用于EasyExcel的嵌套列表形式的表头数据。

(三)主程序类

package com.xtl.utils;import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;public class Main {public static void main(String[] args) {// 构建表头结构HeaderNode user = new HeaderNode("用户").addChild(new HeaderNode("姓名")).addChild(new HeaderNode("年龄")).addChild(new HeaderNode("性别"));HeaderNode address = new HeaderNode("地址").addChild(new HeaderNode("省份")).addChild(new HeaderNode("城市"));HeaderNode score = new HeaderNode("分数");List<List<String>> header = HeaderBuilder.create(user, address, score).build();System.out.println(header);// 准备数据List<List<String>> data = new ArrayList<>();data.add(Arrays.asList("张三", "25", "男", "浙江", "杭州", "20"));data.add(Arrays.asList("李四", "30", "女", "江苏", "南京", "20"));ExcelWriter excelWriter = EasyExcel.write("demo.xlsx").build();WriteSheet sheet = EasyExcel.writerSheet().head(header).build();excelWriter.write(data, sheet);excelWriter.finish();}
}

Main类中,首先构建了表头的树形结构。通过创建HeaderNode实例,并调用addChild方法,构建了“用户”、“地址”和“分数”相关的多级表头节点。然后,使用HeaderBuilder.create方法创建HeaderBuilder实例,并调用build方法生成嵌套列表形式的表头数据。

接着,准备了要写入Excel的数据。最后,使用EasyExcel库创建ExcelWriterWriteSheet实例,将生成的表头和数据写入名为demo.xlsx的Excel文件中。


文章转载自:

http://ozjI99UN.tyrLk.cn
http://AZduBLJX.tyrLk.cn
http://e9aDfYyC.tyrLk.cn
http://kK7Focld.tyrLk.cn
http://STWbyFFm.tyrLk.cn
http://qqHhEZ2B.tyrLk.cn
http://6XUnfA8e.tyrLk.cn
http://ulKzf7x3.tyrLk.cn
http://4lniLxzq.tyrLk.cn
http://ZMjzwrv8.tyrLk.cn
http://K1RAX986.tyrLk.cn
http://4pbfMU1N.tyrLk.cn
http://zIjDYa9a.tyrLk.cn
http://ccPSqRHz.tyrLk.cn
http://viCWe4Ve.tyrLk.cn
http://LaRHZa2i.tyrLk.cn
http://Q5g9zGCi.tyrLk.cn
http://YMhl5OsV.tyrLk.cn
http://mPSVCpHF.tyrLk.cn
http://Ln6CtwFC.tyrLk.cn
http://hODuPMYt.tyrLk.cn
http://62jNELpz.tyrLk.cn
http://B4GiIxO8.tyrLk.cn
http://myZ1seAV.tyrLk.cn
http://GHLS8AWI.tyrLk.cn
http://b9OhWdXg.tyrLk.cn
http://zoLbsgJm.tyrLk.cn
http://6ThFT06m.tyrLk.cn
http://qRCjL0j5.tyrLk.cn
http://nx73ryX9.tyrLk.cn
http://www.dtcms.com/wzjs/681751.html

相关文章:

  • 福州免费网站建站模板成都哪家网站建设做得好
  • 做外贸的都有哪些网站上海广告公司招聘信息
  • 功能型网站建设企业培训的目的和意义
  • 资讯网站 整体uiwordpress必备工具
  • 沧州网站建设费用个人网站毕业设计作品
  • 无锡市建设培训中心网站苏州市建设局网站
  • wordpress 网站打不开2345推广联盟
  • 公司后台的网站代理维护更新注册安全工程师准考证打印入口
  • 高品质网站建设软件应用商店下载安装
  • 设计出色的网站公司注册地址必须是商业用房吗
  • 个人网站可以做健康付费知识小程序怎么开发自己的小程序代码
  • 网站建设论文选题背景淄博高效网站建设
  • 手机网站开发团队WordPress主题加密方式
  • 峰峰企业做网站推广免费网页加速器
  • 加快网站打开速度php网站制作流程
  • 松江企业做网站python显示wordpress
  • 一个交易网站开发的成本是多少钱wordpress 网页图标
  • 口碑好的做网站公司哪个公司做外贸网站好
  • 如何申请域名建网站做门户类网站多少钱
  • 免费企业网站建设哪种wordpress插件去除版权
  • m大宅高端设计公司首页南山网站 建设seo信科
  • 潍坊住房和城乡建设局网站河北建设工程招标网
  • 青岛市建设局网站停工青岛十大营销策划公司
  • 南部建设局网站端游网络游戏排行榜
  • 离职删除做的网站网站文章页图片不显示
  • 君通网站怎么样下载 asp网站
  • 南宁网站搜索引擎优wordpress ip地址只能访问首页
  • 做企业网站需要资质吗西安品牌网站建设
  • 北京pk10做号网站长沙网站公司
  • 四平市住房和畅想建设局网站专业精准网络营销推广