千家信息网最后更新 2025年02月01日Java树形结构数据生成导出excel文件方法是什么
本篇内容介绍了"Java树形结构数据生成导出excel文件方法是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
什么是树形结构数据
效果
用法
String jsonStr = "{\"name\":\"aaa\",\"children\":[{\"name\":\"bbb\",\"children\":[{\"name\":\"eee\"},{\"name\":\"fff\",\"children\":[{\"name\":\"iii\"},{\"name\":\"jjj\",\"children\":[{\"name\":\"qqq\"},{\"name\":\"ttt\"}]}]},{\"name\":\"www\"}]},{\"name\":\"ccc\",\"children\":[{\"name\":\"ggg\"},{\"name\":\"hhh\",\"children\":[{\"name\":\"kkk\",\"children\":[{\"name\":\"ttt\"},{\"name\":\"mmm\"}]},{\"name\":\"uuu\"}]},{\"name\":\"ooo\"}]},{\"name\":\"ddd\",\"children\":[{\"name\":\"ggg\"},{\"name\":\"hhh\",\"children\":[{\"name\":\"kkk\"},{\"name\":\"uuu\"}]}]}]}";Map tree = JSONObject.parseObject(jsonStr, Map.class);tree2Excel(tree, "E:\\" + System.currentTimeMillis() + ".xls", "name", "children");
源码
package pers.xxx.demo.tree2excel; import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.Closeable;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.util.List;import java.util.Map; /** * 树形结构数据导出excel工具 * * Created by lzy on 2021/2/24 14:09 */@SuppressWarnings("ALL")public class Tree2ExcelUtil { /** * 树形结构数据生成excel文件 * * @param tree 树形数据 * @param filePath 文件路径 * @return */ public static boolean tree2Excel(Map tree, String filePath) { return tree2Excel(tree, filePath, null, null); } /** * 树形结构数据生成excel文件 * * @param tree 树形数据 * @param filePath 文件路径 * @param lableName 标签Key名称 * @param childrenName 子节点Key名称 * @return */ public static boolean tree2Excel(Map tree, String filePath, String lableName, String childrenName) { if (isBlank(filePath)) { System.err.println("文件名称不能为空"); return false; } try { doSame(tree, lableName, childrenName); createExcel(filePath, tree); return true; } catch (IOException e) { e.printStackTrace(); } return false; } /** * 树形结构数据生成Workbook对象 * * @param tree 树形数据 * @param fileSuf 文件后缀,xls/xlsx * @return */ public static Workbook tree2Worbook(Map tree, String fileSuf) { return tree2Worbook(tree, fileSuf, null, null); } /** * 树形结构数据生成Workbook对象 * * @param tree 树形数据 * @param fileSuf 文件后缀,xls/xlsx * @param lableName 标签Key名称 * @param childrenName 子节点Key名称 * @return */ public static Workbook tree2Worbook(Map tree, String fileSuf, String lableName, String childrenName) { if (isBlank(fileSuf)) { System.err.println("必须指定文件后缀"); return null; } try { doSame(tree, lableName, childrenName); return procesData(tree, fileSuf); } catch (Exception e) { e.printStackTrace(); } return null; } //具体实现 /** * 标识最大列 */ private static int maxCol = 0; private static String lableName = "lable"; private static String childrenName = "children"; private static final String COL = "col"; private static final String ROW = "row"; private static final String ROW_OFT = "rowOft"; private static final String ROW_SIZE = "rowSize"; private static void doSame(Map tree, String lableName, String childrenName) { if (!isBlank(lableName)) { Tree2ExcelUtil.lableName = lableName; } if (!isBlank(childrenName)) { Tree2ExcelUtil.childrenName = childrenName; } coreAlgoCol(tree, 1); coreAlgoRow(tree); } /** * 主要算法,计算列的坐标,计算每个节点所占行 * * @param tree 数据 * @param col 递增的列 * @param trees 把高级别向下传递计算递增的行高 */ private static void coreAlgoCol(Map tree, int col, Map... trees) { tree.put(COL, col); Object childrenObj = tree.get(childrenName); if (childrenObj != null) { List
"Java树形结构数据生成导出excel文件方法是什么"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!