【Java实现.xlsx转.xmind】

xmind转excel脚本(简化版) 通过使用xmindparser库完成简单的xmind数据处理后写入到excel中 阅读详情

简单的就是将excel表格里面的数据转成一个Xmind的流程图

重要声明!!!入门新手一枚 如有错误 还请见谅~
源码地址:点击跳转

前期准备

1.安装Xmind,就直接去官网下载一个就好了,以下是我的版本 可以参考
在这里插入图片描述
2.给Idea配置maven环境,因为要用到相关的poi和xmind的依赖包,教程可以自行搜索 配置完成后用cmd/终端 mvn -v 指令检查是否配置成功就可以了
配置成功页面
配置成功页面

正式编码

  1. 首先在pom.xml文件中把需要用的依赖包配置好
    <!--Xmind -->
    <dependency>
      <groupId>com.github.eljah</groupId>
      <artifactId>xmindjbehaveplugin</artifactId>
      <version>0.8</version>
    </dependency>
    <!--poi -->
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml</artifactId>
      <version>3.17</version>
    </dependency>

2.Main.class

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.xmind.core.*;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class Main {
    public static void main(String[] args) throws IOException, InvalidFormatException, CoreException {
        Data data= new Data();
        //excel存放的目录
        String path="/Users/may/Desktop/";
        List<Map<String, Object>> dataList = new ArrayList<>();
        //目录拼接文件名 获取到对应的文件
        dataList=data.setPath(path+"test_case01.xlsx");
        //创建一个空白界面
        IWorkbookBuilder workbookBuilder= (IWorkbookBuilder) Core.getWorkbookBuilder();
        //创建工作溥
        IWorkbook iWorkbook=workbookBuilder.createWorkbook(data.fileName);
        //获取默认sheet
        ISheet primarySheet=iWorkbook.getPrimarySheet();
        //创建一个流程图的主题
        ITopic rootTopic= primarySheet.getRootTopic();
        //设置成为正确的逻辑图
        rootTopic.setStructureClass("org.xmind.ui.logic.right");
        rootTopic.setTitleText(data.fileName);
        //忽略表头
        for (int i=1;i<dataList.size();i++){
            //因为第一列是表头 不需要显示在逻辑图中 所以忽略第一行的数据 i从0开始
            //先定义一个父节点的位置,父结点也就是当前数据需要链接的结点,就当前位置 父结点就是根结点
            ITopic lastTopic = rootTopic;
            for (String value : dataList.get(i).keySet()) {
                //标记是否存在相同结点
                boolean flag=false;
                String key=value;
                //就当前数据创建一个新结点
                ITopic topic = iWorkbook.createTopic();
                topic.setTitleText((String) dataList.get(i).get(key));
                //caseId不用显示在逻辑图中,所以对key==caseId 数据不做处理
                if (key.equals("caseId")) {
                    continue;
                }
                //创建一list对象 用来装父结点的所子结点
                List<ITopic> chil= (List<ITopic>) lastTopic.getAllChildren();
                //如果chil长度<1,证明当前父结点没有子结点,直接父结点中添加就行
                if (chil.size()<1){
                    //将当前结点链接到父结点上
                    lastTopic.add(topic,ITopic.ATTACHED);
                    //将当前结点当作下一个新结点的父结点
                    lastTopic = topic;
                }
                else {
                    //如果chil长度>1,可能存在当前结点topic和lasttopic结点相同,
                    for (int k=0;k<chil.size();k++){
                        if (topic.getTitleText()==chil.get(k).getTitleText()) {
                            //如果相同 就将相同结点的topic 赋给 lasttopic
                            //并且将flag=true 表示存在相同结点
                            lastTopic = chil.get(k);
                            flag = true;
                            break;
                        }
                    }
                    if (!flag){//如果flag==flase,证明不存在相同结点,所以即使循环结束也依旧要把当前结点 topic链接到lasttopic 并且更新lasttopic
                        lastTopic.add(topic,ITopic.ATTACHED);
                        lastTopic = topic;
                    }
                }
            }
        }
        File file1 = new File(path+data.fileName+".xmind");
        //判断该路径下是否存在该文件,如果存在那么删除,如果不存在 直接新建
        if (file1.exists()){
            file1.delete();
        }
        iWorkbook.save(path+data.fileName+".xmind");


    }
}

3.Dat.class

import net.sf.json.JSONArray;
import org.apache.poi.ss.usermodel.CellType;
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 java.io.*;
import java.util.*;

public class Data {
    String path;
    String fileName;
    //只做数据处理
    public List<Map<String, Object>> setPath(String path) throws IOException {
        this.path = path;
        File file = new File(path);
        this.fileName = file.getName();
        fileName = fileName.substring(0, fileName.indexOf("."));
        //System.out.println(this.fileName);
        List<Map<String, Object>> mapsList = null;
        String result = null;
        if (!file.exists()) {
            System.out.println("文件名不存在,请确认无误后重试!");
        } else {
            if (!file.canRead()) {
                System.out.println("该文件没有读取权限,请确认无误后重试!");
            } else {
                // 打开特定类型的输入流,读取文件的字节流 读取的内容in是一个地址:java.io.FileInputStream@19469ea2
                InputStream in = new FileInputStream(file);
                //System.out.println((char) in.read());
                //读取
                XSSFWorkbook sheets = new XSSFWorkbook(in);
                //System.out.println( sheets);
                //获取第一个sheet
                XSSFSheet sheet = sheets.getSheetAt(0);
                //getRow(0)读取第一行表头 A1/B1...
                XSSFRow titile = sheet.getRow(0);
                //System.out.println(sheet.getRow(0));
                System.out.println(sheet.getPhysicalNumberOfRows());
                //定义二维数组,存储读取出来的数据
                mapsList = new ArrayList<>();
                for (int i = 0; i < sheet.getPhysicalNumberOfRows(); i++) {
                    //从第二行开始
                    XSSFRow row = sheet.getRow(i);
                    //System.out.println(row.getPhysicalNumberOfCells());
                    //用于存储当前行的所有数据,以键-值的形式存储 HashMap允许存储相同的元素
                    Map<String, Object> map = new LinkedHashMap<>();
                    //循环遍历当前行
                    //row.getPhysicalNumberOfCells()只统计有内容总列数
                    //getLastCellNum 如果最后有数据的列为n,则返回n-1
                    for (int j = 0; j < row.getLastCellNum() + 1; j++) {
                        //获取这行数据中,对应列的键-值
                        XSSFCell title1 = titile.getCell(j);
                        //System.out.println(title1);
                        XSSFCell cell = row.getCell(j);
                        //System.out.println(cell);
                        //将获取到的值进行类型转换
                        if (cell == null) {
                            continue;
                        }
                        //修改单元格类型-文本类型
                        cell.setCellType(CellType.STRING);
                        //map里面只能是String Object类型的数据,现在的title1和cell的类型是XSSFCell类型 所以需要装换一下
                        String titleName = title1.getStringCellValue();
                        String valueName = cell.getStringCellValue();
                        //替换表格中的换行符
                        //if (valueName.contains("\n")) {
                         //   valueName = valueName.replace("\n", "***");
                        //}
                        map.put(titleName, valueName);
                    }
                    System.out.println(map);
                    mapsList.add(map);
                }
            }
        }
        return mapsList;
    }
}

输出效果

1、原始excel文件
在这里插入图片描述
2、输出Xmind文件结果
在这里插入图片描述

参考资料

1、poi Api:https://poi.apache.org/components/spreadsheet/how-to.html#event_api点击跳转
2、Xmind Api:http://sites.actsmind.com/support/xmnd-api点击跳转

​Python 使用Xmind转换为excel 小工具​ 测试经常使用xmind进行需求分析,再根据需求分析转换为excel,这样的效率比较低,我们可以直接使用xmind转换为excel,省去重复的测试工作,提升效率。5. 生成GUI可视化小工具,需要使用tkinter,把之前封装的方法需要的参数,关联起来进行打包。安装:pip3 install xmindparser ,xmind转换dict,提取节点。-F 后是main文件,-p 后是自己编写的依赖py文件,多个文件使用;4. 执行如上的源码后,自动在当前根目录下生成以测试系统+xlsx 的文件名。 阅读详情

相关推荐

kkFileView 4.4.0:跨平台文档在线预览开源解决方案

文档在线预览技术通过将各类文件格式转换为浏览器可渲染的标准格式(如PDF/图片),解决了企业系统中文件查看的兼容性问题。其核心原理基于格式转换引擎(如LibreOffice)和前端渲染技术(如PDF.js),实现了无需本地安装专业软件即可查看CAD图纸、Office文档等专业格式。这种方案显著降低了系统集成复杂度,特别适用于OA系统、知识库等需要多格式文档支持的场景。kkFileView作为开源解决方案的代表,采用Spring Boot架构,提供Docker化部署和RESTful API,支持包括OFD、X

weixin_34343000的博客 348

excel转xmind

excel转xmind脑图

weixin_44902108的博客 1万+

AI测试用例生成实战:从需求到脚本的智能化转型

软件测试是保障软件质量的关键环节,其核心在于设计全面、有效的测试用例以验证功能正确性。传统测试用例设计高度依赖人工经验,面临效率低、维护成本高等挑战。随着人工智能技术的发展,特别是大语言模型(LLM)和自然语言处理(NLP)的成熟,测试用例生成正经历从手动到智能的范式转变。其技术原理在于利用AI模型理解非结构化的需求描述、接口文档等输入,通过规则引擎与智能推理,自动转化为结构化的测试步骤、数据和预期结果。这项技术的核心价值在于显著提升测试设计的效率与覆盖率,减少人为遗漏,并能快速响应需求变更。其应用场景广泛

441

【思维导图】Excel转成X-mind思维导图

如何将Excel转化为分层级的思维导图

weixin_42941127的博客 2万+

Linux桌面软件生态现状:从办公到开发的全方位应用指南

“Linux 软件生态不行,日常办公娱乐根本没法用。” 这可能是很多开发者、学生甚至普通用户对 Linux 最根深蒂固的刻板印象。很多人对 Linux 的认知还停留在十几年前:黑乎乎的终端、复杂的命令、匮乏的软件,仿佛它只是服务器和极客的专属玩具。这种印象,让无数人即使对 Linux 的自由、高效和安全性心生向往,也望而却步,最终选择继续留在 Windows 或 macOS 的舒适区。 但事实真的如此吗?今天,我想用一个明确的判断来打破这个迷思: Linux 的桌面软件生态,早已不是当年的“北大荒”,而是变

weixin_30299709的博客 355

java文件操作.xmind

里面包含了File类的作用、IO流、字节流字符流、异常处理、缓冲流、转换流、序列化、打印流的详细讲解

企业知识管理革命:kkFileView全格式文档在线预览终极指南

在当今数字化办公环境中,企业每天都会产生大量不同格式的文档,如何高效、安全地实现各类文件的在线预览,成为提升团队协作效率的关键。kkFileView作为一款基于Spring-Boot开发的全格式文档在线预览项目,为企业知识管理带来了革命性的解决方案。它支持多达数十种文件格式的在线预览,无需安装额外软件,让文档查看变得简单高效。 ## 为什么选择kkFileView? 在传统的办公模式中,查看不

gitblog_01175的博客 976

Linux-RGMII PHY 88E1512 驱动调试记录

1. 简介 1)开发板平台:创龙 AM5728 (tl5728-easy-evm) 2)PHY芯片:Marvell 88E1512 88E1512和88E1510都是一个系列的phy,采用marvell的通用phy驱动,驱动源码路径如下:drivers/net/phy/marvell.c 2. 应用场景 1)系统框图 AM5728连接两个PHY,PHY0的工作模式是 RGMII to Copper (RGMII到电口),PHY1的工作模式是 RGMII to SGMII。 两个PHY与处理器的连接方式都是

weixin_40407893的博客 2万+

高性能文件在线预览系统的架构设计与实现

在当今数字化办公环境中,企业每天需要处理海量的文档、图片、表格等多种格式文件。传统方式中,用户需要下载文件并使用本地软件打开查看,这不仅降低了工作效率,还带来了安全隐患和兼容性问题。kkFileView作为一款基于Spring Boot的通用文件在线预览解决方案,通过创新的架构设计和技术实现,为企业提供了一站式的文件在线预览服务,支持超过50种文件格式的即时预览。 ## 架构总览:模块化设计理念

gitblog_01180的博客 378

【鸿蒙南向开发】OpenHarmony音频驱动audio适配方案

这份鸿蒙(HarmonyOS NEXT)文档包含了鸿蒙开发必掌握的核心知识要点,内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、OpenHarmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。

HarmonyOS_666的博客 4514

【机电杂谈2】BLDC和PMSM的特点和区别

在日常生活中,小到电动玩具,大到电动汽车,永磁电机的身影可以说是无处不在。有刷直流电机、无刷直流电机、永磁同步电机由于其结构和输出特定的不同也被应用到不同的场合。如果你经常拆一些玩具和家电,就会看到大量的有刷直流电机和无刷直流电机,而永磁同步电机主要应用在高精度的工业伺服和电动汽车领域。本文就从电机的结构和控制方面,对这几种常见的永磁电机做简单的梳理和归纳。

2937

PaddleLabel 图像检测自动标注实战:基于 PicoDet 的智能预标注全流程指南

本文围绕 PaddleLabel 提供的**图像检测自动标注**功能展开,讲解如何通过“自动推理设置”一键启用深度学习模型(当前支持 PicoDet)为目标检测数据集生成预标注结果,从而大幅提升标注效率。读完本文,你将掌握从环境安装、检测项目创建、数据集组织、自动推理参数配置,到数据划分导出、并衔接 PaddleDetection 训练的全链路操作,并理解“机器学习后端 + 标注前端”的底层架构与

gitblog_00235的博客 997

scGPT实战指南:如何用生成式AI加速你的单细胞多组学研究?

本文提供了scGPT在单细胞多组学研究中的实战指南。详细介绍了从环境部署、数据预处理到细胞类型注释与扰动预测等核心任务的操作流程。通过利用生成式AI和Transformer基础模型,scGPT能够显著加速分析,并提升细胞注释的准确性及基因调控网络推断的深度,为研究人员提供了强大的AI分析引擎。

weixin_29215815的博客 402

好用的免费工具记录

一切由Voidtools是一个强大的文件搜索工具,帮助您快速定位计算机上的文件和文件夹。凭借其小的安装文件、干净而简单的用户界面、快速的文件索引和快速搜索能力,Everything使得找到您要寻找的内容变得轻松。无论您需要进行故障诊断还是只是核实系统速度,此应用都会为您保驾护航。它内置了一个强悍的文档分析器,能独立的提取出多种文档格式的文字,结合高效的智能引擎,最后将文档的元数据存入索引数据结构中,就可以快速的搜索出任意存在的文档。支持pdf,excel,ppt,word,图片等文件格式的相互转换。

weixin_43981950的博客 344

Windows下用Docker快速搭建SearXNG私有搜索引擎(附Dify集成配置)

本文详细介绍了在Windows环境下使用Docker快速搭建SearXNG私有搜索引擎的完整流程,包括环境准备、容器化部署、安全配置优化以及与Dify平台的深度集成方法。通过分步指导和实用配置示例,帮助开发者构建兼具隐私保护和AI增强能力的本地化搜索解决方案,特别适合需要定制化搜索服务的应用场景。

weixin_30300225的博客 336

快速理解OSI七层模型(举例理解,数据传输过程,深入理解OSI七层模型)

我们需要了解互联网的本质是一系列的网络协议,这个协议就叫做OSI协议(开放系统互联(Open System Interconnection)),它是由ISO(国际标准化组织)定义的。 需要注意,随着时代的发展,OSI已经被TCP/IP 4层模型淘汰,在当今世界上并没有大规模的使用。 那么对于OSI,人们按照功能不同,分工不同,人为的将OSI的分为七层。实际上这七层是并不存在的,也就是说没有这些概念,而我们今天提到的七层概念,只是人为的划分而已。目的只是为了让大家更好地理解这些都是用来做什么的。

CN_TangZheng的博客 3万+

企业级CAD图纸智能解析架构:高性能自动化参数提取方案

kkFileView是一款基于Spring Boot构建的企业级文件在线预览解决方案,专为工程设计和制造行业提供CAD图纸参数智能提取与结构化处理能力。该架构支持DWG、DXF、DWT等主流CAD格式的高精度解析,实现设计参数99.9%准确率的自动化提取,为PLM、ERP系统提供无缝数据集成接口。 ## 技术挑战与解决方案 传统CAD图纸参数提取面临多重技术瓶颈:格式兼容性差、解析精度不足、处

gitblog_00503的博客 634

金融领域图注意力网络的创新应用

随着金融市场的日益复杂和数据量的爆炸式增长,传统的数据分析方法在处理金融数据的复杂关系和结构时面临诸多挑战。图注意力网络(Graph Attention Network,GAT)作为一种新兴的深度学习技术,能够有效处理图结构数据,挖掘数据中的潜在关系。本文的目的在于深入探讨图注意力网络在金融领域的创新应用,涵盖风险评估、投资决策、欺诈检测等多个方面。通过理论分析、算法实现和实际案例展示,为金融从业者和研究者提供全面的技术参考,推动图注意力网络在金融领域的广泛应用。

AI云原生与云计算技术学院 721

本地全文搜索神器 AnyTXT Searcher|替代 Windows 搜索,文档内容秒检索标签

AnyTXTSearcher是一款免费跨平台本地全文检索工具,解决Windows搜索慢、不支持文件内容检索的痛点。支持Word/PDF/Excel等百种格式,无需安装Office即可秒级搜索文档内容,高亮显示关键词。特色功能包括OCR识别(专业版)、离线安全、低资源占用,可与Everything搭配实现"文件名+内容"双搜索。适合办公、编程、科研等场景,免费版满足基础需求,但32位系统与高级OCR需专业版。建议官网下载避免安全风险,是提升文件检索效率的利器。

2302_79311751的博客 2296

选择的 Python 解释器无效,请尝试更改解释器以启用 IntelliSense、Lint 分析和调试等功能。请查看输出,详细了解解释器无效的原因。

摘要:在VS Code中配置Anaconda Python解释器时若出现"解释器无效"错误,可通过修改用户设置解决。具体步骤:1) 按Ctrl+Shift+P打开命令面板;2) 搜索并打开用户设置JSON文件;3) 添加conda路径配置项,示例格式为"python.condaPath": "D:\\Anaconda\\setup\\Scripts\\conda.exe";4) 同时启用环境激活选项"python.terminal.act

猿小白的博客 844

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

终极文件在线预览解决方案:kkFileView如何轻松解决你的文档查看难题

还在为无法在线预览Office文档、CAD图纸或3D模型而烦恼吗?kkFileView是一款基于Spring Boot构建的**文件在线预览项目**,能够一站式解决30多种文件格式的在线查看需求。无论你是企业用户需要协作查看文档,还是开发者需要集成文件预览功能,这个开源项目都能为你提供简单、快速、免费的解决方案。 ## 为什么你需要kkFileView? 想象一下这些场景:同事发来一个CAD设

gitblog_01054的博客 827

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

文件预览服务:kkFileView、File Viewer、Open File Viewer

概述、OSS、COS、开源、kkFileView、部署、集成MinlO、File Viewer、实战、

lonelymanontheway的博客 688

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

正则表达式完整知识体系

正则表达式(Regex)是一种文本处理工具,通过特殊字符组合定义匹配模式,用于字符串的查找、校验、提取和替换。核心特性包括: 基础语法 元字符:.(任意字符)、\d(数字)、\w(单词字符)等 量词:+(1次以上)、*(0次以上)、{n,m}(次数范围) 分组:()捕获内容,(?:)非捕获分组 边界:^(起始)、$(结尾)、\b(单词边界) 高级功能 零宽断言:(?=)(正向先行)、(?<=)(正向后行)实现精准匹配 贪婪/非贪婪:默认贪婪匹配,?切换非贪婪 修饰符:g(全局)、i(忽略大小写)、s(

专注 Java 后端开发,分享基础语法、JVM、并发、Spring 全家桶、微服务、分布式、性能优化等实战干货。坚持输出高质量技术笔记,用简单语言讲清复杂原理,助力每一位 Java 开发者稳步进阶。 623

内网渗透信息收集:从主机探测到凭证抓取的十三种核心方法

网络安全中的信息收集是渗透测试与防御的基础环节,其核心原理在于通过系统性地探测与分析,构建目标网络的完整认知图谱。这项技术的价值在于,它能将看似孤立的资产、服务和配置信息关联起来,形成可指导后续行动的情报,从而显著提升安全评估或威胁响应的效率与精准度。在实际的工程实践中,信息收集广泛应用于内网渗透、红蓝对抗、资产梳理和漏洞评估等场景。具体到内网环境,系统性的信息收集尤为关键,它遵循由浅入深的分层模型,例如从基础的**主机与网络层**探测开始,逐步深入到**服务应用**和**域环境**的分析。本文将聚焦于这一

fanjava 552

软考程序员备考指南:从零基础到精通的系统学习路径与资源评估

在计算机技术学习与职业认证领域,系统化学习路径与高效备考资源是提升学习效果的关键。其核心原理在于通过结构化的知识体系,将零散的知识点串联成完整的认知框架,从而降低学习门槛,提升知识吸收效率。这种体系化学习方法的技术价值在于能够帮助学习者快速构建计算机科学基础,覆盖从计算机系统、数据结构、算法到软件工程等核心领域,为后续深入技术栈或应对职业认证考试奠定坚实基础。在实际应用场景中,这类方法尤其适用于准备计算机技术与软件专业技术资格(水平)考试(软考)的考生,以及希望系统入门计算机科学的自学者。本文聚焦于如何评估

weixin_30411239的博客 401

agent-device 测试工程师实战指南:从一句自然语言指令到跨端测试自动化

文章摘要: Agent-Device是一款AI驱动的跨平台测试工具,允许测试工程师用自然语言操作Android、iOS、Web等设备,无需编写代码。它支持探索测试、严格用例执行及结合需求文档的测试点补充,通过统一命令(如open、snapshot、press等)实现闭环操作。工具适合新功能探索、回归测试及流程固化,可与Appium等现有框架配合。使用前需明确测试对象、环境及验证规则,敏感信息需通过环境变量管理。推荐通过结构化指令(设备、资料、账号、验证口径等)指导AI高效完成任务,输出结果与证据。 核心功能

1、测试博主技术知识分享 2、pos行业知识技术分享 3、java后端技术知识分享 4、嵌入式技术知识分享 5、运维部署相关知识分享 328
下一篇: [Errno 22] Invalid argument: ‘D:\\InstallApp
没壳的乌龟仔
博客等级 码龄8年 0粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值