JAVA代码实现嵌套层级列表,POI导出嵌套层级列表
要实现POI导出EXCEL形如
--A1(LV1)
----B1(LV2)
----B2(LV2)
------C1(LV3)
------C2(LV3)
----B3(LV2)
--A1(LV1)
aaarticlea/png;base64,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" alt="" />
一.能用到的数据字段
ID(主键)、PID(父科目ID)、NAME(名称)、LEVEL(当前层级)
二.思路:
定义一个空的科目列表用来存放已经排好序的科目。创建一个迭代器传入父节点查出它的所有子节点,遍历子节点插入到科目列表的同时再次调用这个迭代器,这样程序能够在插入一个节点后如果发现有子节点继续插入子节点。最后返回排好序的科目树。
三.JAVA代码
/**
*
* <p>Description: 根据根节点获取嵌套科目树</p>
* @param root 根节点,只需itemCode
* @return 嵌套科目树
*/
public List<Subject> getSubjectListByRoot(Subject root){
//定义一个空的科目列表
List<Subject> subjectTree = new ArrayList<Subject>();
//查询出根节点的具体信息
root = this.subjectManager.searchSubjectByCode(root.getItemCode());
//将根节点插入到嵌套科目树里,因为迭代出来的科目树是没有根节点的
subjectTree.add(root);
//调用迭代器
subjectTree = SubjectIteration(root, subjectTree);
return subjectTree;
} /**
*
* <p>Description: 嵌套科目树迭代器</p>
* @param subject 父节点
* @param subjectTree 科目树
* @return 嵌套科目树
*/
public List<Subject> SubjectIteration(Subject subject, List<Subject> subjectTree) {
//根据父节点查子节点
List<Subject> subjects = this.subjectManager.searchListSubjectByParent(subject);
if (subjects != null) {
//遍历子节点并迭代
for (Subject subjectResult : subjects) {
//将节点插入到嵌套科目树里
subjectTree.add(subjectResult);
SubjectIteration(subjectResult,subjectTree);
}
}
return subjectTree;
}
四.SQL
根据父节点查子节点的一段SQL只需比对父节点的ID和子节点的PID即可
五.POI导出
/**
*
* <p>Description: 科目树导出</p>
* @param request
* @param response
* @return Excel文件
* @throws Exception
*/
public ModelAndView downloadExcel(HttpServletRequest request,
HttpServletResponse response) throws Exception {
//文件配置
String fileName = new String(("科目导出文件.xls").getBytes("UTF-8"), "iso-8859-1");
response.reset();
response.setHeader("Content-disposition", "attachment;filename=" + fileName);
response.setContentType("application/vnd.ms-excel;charset=utf-8");
//创建POI-workbook文件
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("科目树");
//插入抬头
PoiUtil.addRowSXSSF(sheet, 0, new String[] { "说明:", "level1", "level2", "level3", "level4", "level5", "level6",
"level7", "level8" });
//调整sheet样式
//红
CellStyle styleRed = workbook.createCellStyle();
styleRed.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);
styleRed.setFillForegroundColor(IndexedColors.RED.index);
//绿
CellStyle styleGreen = workbook.createCellStyle();
styleGreen.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);
styleGreen.setFillForegroundColor(IndexedColors.LIME.index);
//灰
CellStyle styleGrey = workbook.createCellStyle();
styleGrey.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);
styleGrey.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.index);
//白
CellStyle styleWhite = workbook.createCellStyle();
styleWhite.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);
styleWhite.setFillForegroundColor(IndexedColors.WHITE.index);
//金黄
CellStyle styleGold = workbook.createCellStyle();
styleGold.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);
styleGold.setFillForegroundColor(IndexedColors.GOLD.index);
//黄
CellStyle styleYellow = workbook.createCellStyle();
styleYellow.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);
styleYellow.setFillForegroundColor(IndexedColors.YELLOW.index);
//亮黄
CellStyle styleLight = workbook.createCellStyle();
styleLight.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);
styleLight.setFillForegroundColor(IndexedColors.LIGHT_YELLOW.index);
//柠檬
CellStyle styleLemon = workbook.createCellStyle();
styleLemon.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);
styleLemon.setFillForegroundColor(IndexedColors.LEMON_CHIFFON.index);
//设置抬头颜色
XSSFRow row = sheet.getRow(0);
Cell cell = row.getCell(1);
cell.setCellStyle(styleRed);
cell = row.getCell(2);
cell.setCellStyle(styleGreen);
cell = row.getCell(3);
cell.setCellStyle(styleGrey);
cell = row.getCell(4);
cell.setCellStyle(styleWhite);
cell = row.getCell(5);
cell.setCellStyle(styleGold);
cell = row.getCell(6);
cell.setCellStyle(styleYellow);
cell = row.getCell(7);
cell.setCellStyle(styleLight);
cell = row.getCell(8);
cell.setCellStyle(styleLemon);
//查询Excel用科目树
List<Subject> subjectTree = new ArrayList<Subject>();
Subject root = new Subject();
root.setItemCode("1001");
subjectTree = getSubjectListByRoot(root);
//插入数据
int index = 0;
for(Subject subject : subjectTree){
index = index + 1;
Row dataRow = sheet.createRow(index);
String lv = subject.getLevel();
if(lv.equals("1")){
Cell dataCell = dataRow.createCell(0);
dataCell.setCellValue(subject.getItemName());
dataCell.setCellStyle(styleRed);
}
else if(lv.equals("2")){
Cell dataCell = dataRow.createCell(0);
dataCell.setCellValue(subject.getItemName());
dataCell.setCellStyle(styleGreen);
}
else if(lv.equals("3")){
Cell dataCell = dataRow.createCell(0);
dataCell.setCellValue(subject.getItemName());
dataCell.setCellStyle(styleGrey);
}
else if(lv.equals("4")){
Cell dataCell = dataRow.createCell(0);
dataCell.setCellValue(subject.getItemName());
dataCell.setCellStyle(styleWhite);
}
else if(lv.equals("5")){
Cell dataCell = dataRow.createCell(0);
dataCell.setCellValue(subject.getItemName());
dataCell.setCellStyle(styleGold);
}
else if(lv.equals("6")){
Cell dataCell = dataRow.createCell(0);
dataCell.setCellValue(subject.getItemName());
dataCell.setCellStyle(styleYellow);
}
else if(lv.equals("7")){
Cell dataCell = dataRow.createCell(0);
dataCell.setCellValue(subject.getItemName());
dataCell.setCellStyle(styleLight);
}
else if(lv.equals("8")){
Cell dataCell = dataRow.createCell(0);
dataCell.setCellValue(subject.getItemName());
dataCell.setCellStyle(styleLemon);
}
}
sheet.setColumnWidth(0, 9000);
//创建输出流,生成文件
OutputStream out = new BufferedOutputStream(response.getOutputStream());
workbook.write(out);
out.flush();
out.close();
return null;
}
JAVA代码实现嵌套层级列表,POI导出嵌套层级列表的更多相关文章
- AndroidStudio中使用XML和Java代码混合控制UI界面实现QQ相册照片列表页面
场景 效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 新建Androi ...
- java 通过Apache poi导出excel代码demo实例
package com.zuidaima.excel.util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutput ...
- Java POI 导出EXCEL经典实现 Java导出Excel
转自http://blog.csdn.net/evangel_z/article/details/7332535 在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者 ...
- Java使用POI导出excel(下)——实例与小技巧
[更新]:thinkgem的导出工具类: /** * Copyright © 2012-2016 <a href="https://github.com/thinkgem/jeesit ...
- 重构:以Java POI 导出EXCEL为例
重构 开头先抛出几个问题吧,这几个问题也是<重构:改善既有代码的设计>这本书第2章的问题. 什么是重构? 为什么要重构? 什么时候要重构? 接下来就从这几个问题出发,通过这几个问题来系统的 ...
- 重构:以Java POI 导出EXCEL为例2
前言 上一篇博文已经将一些对象抽象成成员变量以及将一些代码块提炼成函数.这一节将会继续重构原有的代码,将一些函数抽象成类,增加成员变量,将传入的参数合成类等等. 上一篇博文地址:http://www. ...
- Java之POI导出Excel(一):单sheet
相信在大部分的web项目中都会有导出导入Excel的需求,今天我们就来看看如何用Java代码去实现 用POI导出Excel表格. 一.pom引用 pom文件中,添加以下依赖 查看代码 <!-- ...
- [改善Java代码]列表相等只需关系元素数据
来看一个判断列表相等的例子,看代码: import java.util.ArrayList; import java.util.Vector; public class Client { public ...
- java中使用poi导出excel表格数据并且可以手动修改导出路径
在我们开发项目中,很多时候会提出这样的需求:将前端的某某数据以excel表格导出,今天就给大家写一个简单的模板. 这里我们选择使用poi导出excel: 第一步:导入需要的jar包到 lib 文件夹下
随机推荐
- dropout理解:1神带9坑
Dropout是深度学习中防止过拟合的一项非常常见的技术,是hinton大神在12年提出的一篇论文里所采用的方法.有传言hinton大神的数学功底不是很好,所以他所提出的想法背后的数学原理并不是很复杂 ...
- Android 再按一次退出程序三种办法
在Xamarin android中双击返回键退出程序的第一种做法 思路就是当用户按下返回键的时间超过两秒就退出,根据Keycode.Back判断用户按下的是返回键,重写这个OnKeyDown Date ...
- HNOI 2012 矿场搭建
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #def ...
- bzoj 3626: [LNOI2014]LCA
Description 给出一个n个节点的有根树(编号为0到n-1,根节点为0).一个点的深度定义为这个节点到根的距离+1.设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先.有q ...
- ffmpeg常用命令---转
1.分离视频音频流 ffmpeg -i input_file -vcodec copy -an output_file_video //分离视频流 ffmpeg -i input_file -acod ...
- 用python在excel中读取与生成随机数写入excel中
今天是我第一次发博客,就关于python在excel中的应用作为我的第一篇吧. 具体要求是:在一份已知的excel表格中读取学生的学号与姓名,再将这些数据放到新的excel表中的第一列与第二列,最后再 ...
- 在表格中,th scope="row"和th scope="col"中的scope属性的用法及意义
把表头和数据联系起来:scope,id,headers属性就我用到现在,很多表格要比上面提供的例子复杂的多.让例子复杂一点,我会移去"Company"表头,并且把第一列的数据移到表 ...
- input 上传图片显示预览、调用摄像头,ios和Android的兼容性解决
html代码: <img id="pic" src="img/pic.png"/> </span><input id=" ...
- ssh的action校验内容输出
当form里为input类型时,如<input type="text" name="manager.name" />,则在对应的jsp中要使用< ...
- Tableau的简单数据可视化操作
本文将讲解Tableau的基本使用和简单的数据分析. 在Tableau首页,我们可以看到有多种连接方式:文本文件.Excel.JSON文件.数据库等. 1.连接文本文件 点击"连接" ...