首先 讲下需求
工作中遇到的,要求从一个功能中导出一堆会员数据,这些会员是有层级结构的,有推荐关系的那种
后台中是以树形展示的 但是导出到excel如何也实现这种树形排列呢 ?
发现POI可以实现这个功能 特别感谢谷歌 根据谷歌的知识汇总 的启发自己实现了这个功能 支持无线层级的树形结构
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.sl.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.util.CellRangeAddress;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.util.Calendar;
import java.util.List;
import java.util.Map;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.struts2.ServletActionContext;
/**
* @author zqb
* @version 1.0.0
* @ClassName ExcelUtils.java
* @Description TODO excel工具类 主要功能是 合并单元格功能的支持
* @createTime 2020年11月16日 10:35:00
*/
public class ExcelUtils {
/**
* @Description:
* @Param: level 总层级 filePathName要导出得道文件名称
* @return:
* @Author: Mr.zqb
* @Date: 2021/1/22
*/
public static void write(ShopTreeNode tree,int level, String filePathName) {
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("Tree");
// writeHelp(0, 1, tree, sheet);
int mergerNum=createHierarchy(sheet,tree,1,0,level);
//System.out.println("mergerNum:" +mergerNum);
XSSFCell cell = null;
XSSFRow row = null;
// HSSFCell cell = null;
// 在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
row= sheet.createRow(0);
// 创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
cell = row.createCell(0);
// 合并单元格C