首页 > 其他分享 >easyexcel导出树状结构

easyexcel导出树状结构

时间:2024-05-30 16:54:37浏览次数:17  
标签:level addvnm lttd easyexcel 树状 导出 lgtd null children

主类

package cn.piesat.nj.farm.agricultural;

import com.alibaba.excel.write.metadata.fill.FillConfig;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;

/**
* @author linjunwei
* @version 2024/5/30 14:36
*/
public class test {

public static void main(String[] args) {
String filePath = "C:\\Users\\HTHT\\Desktop\\全国行政区中心点坐标.txt";
String txtContent = readTxtFile(filePath);
Dto dto = JSON.parseObject(txtContent, Dto.class);
int i = dto.getChildren().get(0).getChildren().get(0).countAllChildren();
System.out.println(i);
int i2 = dto.getChildren().get(0).getChildren().get(1).countAllChildren();
System.out.println(i2);
System.out.println(dto.getChildren().get(1).countAllChildren());

try (Workbook workbook = new XSSFWorkbook();
FileOutputStream fileOut = new FileOutputStream("C:\\Users\\HTHT\\Desktop\\全国行政区中心点坐标3.xlsx")) {
Sheet sheet = workbook.createSheet("Tree Data");

// 递归遍历树结构数据,并写入Excel
int rowIndex = 0;
exportTreeDataToExcel(dto, sheet, rowIndex, 0);
workbook.write(fileOut);
} catch (IOException e) {
e.printStackTrace();
}
}



private static void exportTreeDataToExcel(Dto treeData, Sheet sheet, int rowIndex, int level) {
Row row = sheet.getRow(rowIndex);
if (row == null){
row = sheet.createRow(rowIndex);
}
Cell cell = row.createCell(level);
cell.setCellValue(treeData.getAddvnm());

if (treeData.getChildren() != null && !treeData.getChildren().isEmpty()) {
int startRow = rowIndex;
for (Dto child : treeData.getChildren()) {
exportTreeDataToExcel(child, sheet, rowIndex, level + 1);
rowIndex += child.countAllChildren();
}

int endRow = rowIndex-1;

try{
sheet.addMergedRegion(new CellRangeAddress(startRow, endRow, level, level));
}catch (Exception e){

}


} else {
Cell cell2 = row.createCell(++level);
cell2.setCellValue("主人");
}
}


public static String readTxtFile(String filePath) {
StringBuilder content = new StringBuilder();
try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = br.readLine()) != null) {
content.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
return content.toString();
}
}
dto对象
package cn.piesat.nj.farm.agricultural;

import lombok.Data;

import java.util.List;

/**
* @author linjunwei
* @version 2024/5/30 14:07
*/
@Data
public class Dto {

private String addvnm;

private String padcd;

private String level;

private String lgtd;

private String lttd;

private List<Dto> children;

public int countAllChildren() {
int count = 0; // Include the current node itself
if (this.children != null) {
for (Dto child : this.children) {
count += child.countAllChildren();
}
}else {
count = 1;
}
return count;
}

}

数据,由于全部数据放不下,这里截取一部分数据

{"addvcd": "",
"addvnm": "全国",
"lgtd": null,
"lttd": null,
"padcd": "ROOT",
"init": null,
"comments": null,
"children": [
{
"addvcd": "110000",
"addvnm": "北京",
"lgtd": 116.411616,
"lttd": 40.183962,
"padcd": "000000",
"init": null,
"comments": "北京",
"children": [
{
"addvcd": "110100",
"addvnm": "市辖区",
"lgtd": 116.348169,
"lttd": 40.064724,
"padcd": "110000",
"init": null,
"comments": "北京-市辖区",
"children": [
{
"addvcd": "110101",
"addvnm": "东城区",
"lgtd": 116.410521,
"lttd": 39.911497,
"padcd": "110100",
"init": null,
"comments": "北京-市辖区-东城区",
"children": null,
"level": 3
},
{
"addvcd": "110102",
"addvnm": "西城区",
"lgtd": 116.359646,
"lttd": 39.910748,
"padcd": "110100",
"init": null,
"comments": "北京-市辖区-西城区",
"children": null,
"level": 3
},
{
"addvcd": "110105",
"addvnm": "朝阳区",
"lgtd": 116.509024,
"lttd": 39.94905,
"padcd": "110100",
"init": null,
"comments": "北京-市辖区-朝阳区",
"children": null,
"level": 3
},
{
"addvcd": "110106",
"addvnm": "丰台区",
"lgtd": 116.243918,
"lttd": 39.834659,
"padcd": "110100",
"init": null,
"comments": "北京-市辖区-丰台区",
"children": null,
"level": 3
},
{
"addvcd": "110107",
"addvnm": "石景山区",
"lgtd": 116.170175,
"lttd": 39.931996,
"padcd": "110100",
"init": null,
"comments": "北京-市辖区-石景山区",
"children": null,
"level": 3
},
{
"addvcd": "110108",
"addvnm": "海淀区",
"lgtd": 116.227851,
"lttd": 40.025564,
"padcd": "110100",
"init": null,
"comments": "北京-市辖区-海淀区",
"children": null,
"level": 3
},
{
"addvcd": "110109",
"addvnm": "门头沟区",
"lgtd": 115.78368,
"lttd": 39.994165,
"padcd": "110100",
"init": null,
"comments": "北京-市辖区-门头沟区",
"children": null,
"level": 3
},
{
"addvcd": "110111",
"addvnm": "房山区",
"lgtd": 115.849268,
"lttd": 39.719017,
"padcd": "110100",
"init": null,
"comments": "北京-市辖区-房山区",
"children": null,
"level": 3
},
{
"addvcd": "110112",
"addvnm": "通州区",
"lgtd": 116.728488,
"lttd": 39.80108,
"padcd": "110100",
"init": null,
"comments": "北京-市辖区-通州区",
"children": null,
"level": 3
},
{
"addvcd": "110113",
"addvnm": "顺义区",
"lgtd": 116.71669,
"lttd": 40.148274,
"padcd": "110100",
"init": null,
"comments": "北京-市辖区-顺义区",
"children": null,
"level": 3
},
{
"addvcd": "110114",
"addvnm": "昌平区",
"lgtd": 116.204687,
"lttd": 40.214541,
"padcd": "110100",
"init": null,
"comments": "北京-市辖区-昌平区",
"children": null,
"level": 3
},
{
"addvcd": "110115",
"addvnm": "大兴区",
"lgtd": 116.411932,
"lttd": 39.646566,
"padcd": "110100",
"init": null,
"comments": "北京-市辖区-大兴区",
"children": null,
"level": 3
},
{
"addvcd": "110116",
"addvnm": "怀柔区",
"lgtd": 116.580706,
"lttd": 40.628786,
"padcd": "110100",
"init": null,
"comments": "北京-市辖区-怀柔区",
"children": null,
"level": 3
},
{
"addvcd": "110117",
"addvnm": "平谷区",
"lgtd": 117.137882,
"lttd": 40.2084,
"padcd": "110100",
"init": null,
"comments": "北京-市辖区-平谷区",
"children": null,
"level": 3
}
],
"level": 2
},
{
"addvcd": "110200",
"addvnm": "郊区县",
"lgtd": 116.597258,
"lttd": 40.531034,
"padcd": "110000",
"init": null,
"comments": "北京-郊区县",
"children": [
{
"addvcd": "110228",
"addvnm": "密云县",
"lgtd": 116.988102,
"lttd": 40.524896,
"padcd": "110200",
"init": null,
"comments": "北京-郊区县-密云县",
"children": null,
"level": 3
},
{
"addvcd": "110229",
"addvnm": "延庆县",
"lgtd": 116.158684,
"lttd": 40.537922,
"padcd": "110200",
"init": null,
"comments": "北京-郊区县-延庆县",
"children": null,
"level": 3
}
],
"level": 2
}
],
"level": 1
}}

标签:level,addvnm,lttd,easyexcel,树状,导出,lgtd,null,children
From: https://www.cnblogs.com/bawanglong168/p/18222722

相关文章

  • sybase数据库导出
    sybase数据库导出摘自:https://blog.51cto.com/u_16213425/9054434在数据库管理中,数据导出是一项重要的任务,它可以将数据库中的数据导出到其他形式的文件中,以便进行备份、迁移或与其他系统进行数据交互。Sybase数据库是一个流行的关系型数据库管理系统,本文将向您介绍如何在Sybase......
  • 导出离校单,单个word, word转pdf, word里面有图片
    引入@AutowiredprivateHttpServletResponseresponse;@AutowiredprivateHttpServletRequestrequest;实现类导出单个word点击查看代码publicvoidexportStudentWordOld(JcsjLxxsxxDTOjcsjLxxsxxDTO){ StringschoolName=jcsjLxxsglVOMapper.querySchoolName(); ......
  • spark sql导出数据为excel文件和csv文件
    一、利用to_csv函数导出数据为csv文件:df=spark.sql('''select*fromtable;''')df.toPandas().to_csv('table.csv',index=False)其中:index=False参数表示在保存时不包括行索引。二、利用to_excel函数导出数据为excel文件:df=spark.sql('''select*from......
  • 如何导出与pip库版本相关的requirement.txt文件
    在Python项目中,导出与pip库版本相关的requirements.txt文件是一个常见的任务。这个文件包含当前环境中所有已安装的包及其版本信息,可以用于在其他环境中再现相同的包安装。步骤:1.激活虚拟环境首先,确保你已经激活了你的虚拟环境。如果你没有使用虚拟环境,建议你创建......
  • ESXI6.0导出(迁移)虚拟机到ESXI7.0
    环境:ESXI6.0、ESXI7.0目的:ESXI6.0上的虚拟机迁移到ESXI7.0上 ① 通过vSphereClient软件登陆ESXI6.0,进行虚拟机的导出选中已关机的虚拟机(我这边虚拟机是Ubuntu14.04.5系统,EFI引导格式),点击左上角“文件”——“导出”——“导出OVF模板”,可以将模板保存在本机目录注意......
  • workbench导入导出操作
    前言现如今大家基本上都是使用客户端操作数据库,包括数据库迁移,下面来详解一下如何使用MySqlWorkbench来做数据库导出和导入操作,很简单,但是有图解!正文操作入口数据库导出点击左侧的[DataExport]之后,呈现上面的图,按照说明选择自己的方式,然后点击[StartExport]就开始导出......
  • 解决Android studio导出apk安装包问题
    当我们做好项目,在模拟器上运行调试好,或许也想把做好的APP放到自己手机上运行一下。这时候我们就需要导出apk文件,也就是安装包,然后在自己手机的直接安装就行了。下面教大家如何导出apk文件首先打开你的项目,选择Build=>BuildBundle(s)andAPK(s)=>BuildAPK(S)......
  • iOS 自动打包导出并安装ipa
    最近项目中加了推送通知功能,之前特别区分开发和生产环境,都是打包时手动切换的;加了推送后,手动改的地方比较多,可能会出错,所以就搜索了可以自动切换的方法,可以使用多个target的方式解决;生产环境本地无法直接运行,每次都要打包导出并且手动安装,比较麻烦,所以有搜索了自动打包导出安装的......
  • SQL Server2008 r2数据库备份还原与导入导出
    备份还原        在使用数据库时,数据丢失或损坏是一件非常糟糕的事,为了应对这类事情的发生,我们可以对数据库进行备份,数据丢失或损坏时,可以还原数据。数据的备份     1.创建备份设备    在“服务器对象”中找到“备份设备”,右键点击后选取“新......
  • 如何安全地进行隔离网文件导出,最优方案出炉!
    越来越多的企业在网络建设时进行网络隔离,通常与提高安全性和控制风险有关。但网络隔离后,企业仍存在与外部客户、合作伙伴等数据交换的场景需求,即如何安全进行隔离网文件导出,是企业急需解决的一个难题。先来看一下,企业通常会采取哪些隔离方式吧?1、网闸/光闸隔离:阻断网络通信协议,......