python代码实现xmind思维导图转换为excel功能

目录

转换前xmind示例

运行代码转换后excel示例

python代码


转换前xmind示例

运行代码转换后excel示例

如果想要合并单元格内容,在后面一列参考输入

=B2&C2&D2&E2

python代码

from xmindparser import xmind_to_dict
import pandas as pd
from openpyxl.workbook import Workbook# 可以设想为一个树结构,利用递归函数,获取由根至各叶子节点的路径。
def xm_parse(dic, pre_data=[]):"""输入一个由xmindparser,转换而来的字典形式的数据,将之转换成列表"""title_list = []topic_list = []try:topics = dic.get("topics")title = dic.get("title")# 将前缀追加title_list.append(title)title_list = pre_data + title_list# 如果到达末尾,就返回if topics is None and title:yield title, title_list
#             print(title,title_list)return# 如果是列表,就暂存起来(若每个对象为标准的列表,即 topics= topic_list,则可以跳过该步骤)elif isinstance(topics, list) and title:for topic in topics:topic_list.append(topic)except AttributeError as e:print("异常结束")returnif topic_list:for topic in topic_list:yield from xm_parse(topic,title_list)def main():x_flie=r"转换excel前.xmind"out_file=r"xmind转换后3.xlsx"temp=[]max_cols=0json_data= xmind_to_dict(x_flie)#提取数据,并找出最大深度(列数)for i,j in xm_parse(json_data[0]['topic']):temp.append(j)max_cols= max_cols if max_cols > len(j) else len(j)#对缺失数据采用补全for i in range(len(temp)):temp[i] = temp[i] + (max_cols - len(temp[i])) * [None]result=pd.DataFrame.from_records(temp,columns=["标题-{}".format(i+1) for i in range(max_cols)])# result.to_excel(out_file,index=False,encoding='utf-8-sig')result.to_excel(out_file,index=False)if __name__ == '__main__':main()

参考文章如何利用python将xmind转为Excel?_python xmind转excel-CSDN博客

因为在执行原代码时候遇到了报错,排查问题后,我修改了1处代码。如下

新导入openpyxl包

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/689004.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初识多线程

1. 前置知识——进程 在学习多线程前需要了解操作系统中的基本知识,这里简单回顾下。 1.1 进程控制块 一个进程对应着一个进程控制块PCB,PCB是一个用于管理和维护进程信息的数据结构,这个数据结构中大致包含下面内容(并不完整&…

Centos 中如何汉化man命令

刚学Linux,记不住命令和选项,很依赖里面的 man 查看命令,但因为着实看不懂,有没有什么办法把man查看命令的信息改成中文 在CentOS 7中,你可以通过安装man-pages-zh包来获取中文的man手册。以下是具体的步骤&#xff1a…

学生党性价比蓝牙耳机哪款好用?五款性价比机型盘点分享

在众多的蓝牙耳机里,对于许多预算不到的学生党来说,想要在有限的预算内挑选到一款性价比高、性能出色的蓝牙耳机,确实是一个不小的挑战,作为蓝牙耳机大户的我今天就来为大家盘点五款性价比极高的蓝牙耳机,帮助大家在有…

Sqlite在Mybatis Plus中关于时间字段的处理

我的个人项目中,使用Mybatis-Plus 和 Sqlite数据库, 但是在存储和查询时间字段的时候,总是出现问题,记录下我解决问题的过程。 Sqlite会默认把时间字段转成时间戳存储到数据库的字段中,看起来不直观,所以我…

永倍达 最新消息!发放消费券! 重新开网?

大家好 我是一家软件开发公司的产品经理 吴军 我又又又又又叕来蹭热度了,最近永倍达有新动作!发放消费券? 店长群最新通知 4.15号开始发放消费券 一个月之后才可以重新提现 今天是5.10号离5.18也不远了 大家拭目以待看看到底能不能提现&a…

品鉴中的个人风格:如何形成自己与众不同的红酒品鉴体验

品鉴云仓酒庄雷盛红酒不仅是一种感官体验,更是一种个人风格的展现。每个人都有自己与众不同的品味和偏好,通过品鉴红酒,我们可以形成自己与众不同的红酒品鉴体验。 要形成自己与众不同的红酒品鉴体验,首先需要勇于尝试不同类型的红…

记一次favicon.ico的折腾

某项目需要将前端和后台整合在一起 我也不知道为啥要整合 上面有要求就整呗 正常前端npm run build打包后 dist内会根据设置自动生成favicon.ico文件在根目录下 但由于前后端整合 需要打包后将图标放在dist下的static文件夹里 需要的效果 打包后 index.html里 <link rel&…

LVS的三种工作模式---(DR/TUN/NAT)

目录 一、NAT模式&#xff08;LVS-NAT&#xff09; 二、IP隧道模式&#xff08;LVS-TUN&#xff09; 三、DR模型--直接路由模式&#xff08;LVS-DR&#xff09; LVS/DR模式ARP抑制 原因&#xff1a; LVS的DR工作模式及配置&#xff1a; LVS的NAT工作模式及配置&#xff1…

基于springboot实现贸易行业crm系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现贸易行业crm系统演示 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了基于springboot的贸易行业crm系统的开发全过程。通过分析基于springboot的贸易行业crm系统管理的不足&#xff0c;创建…

Redis如何避免数据丢失?——RDB

目录 1. RDB机制的配置 2. fork()函数和写时复制(Copy On Write&#xff09; 什么是Copy On Write 系统fork中使用Copy On Write机制 3. RDB文件结构 RDB文件内容和内容顺序 InfoAuxFields是rdb信息数据 数据库数据 数据 数据存储格式 字符串编码 操作码 4. RDB的2…

物联网SCI期刊,潜力新刊,审稿速度快,收稿范围广泛!

一、期刊名称 Internet of Things 二、期刊简介概况 期刊类型&#xff1a;SCI 学科领域&#xff1a;物联网 影响因子&#xff1a;5.9 中科院分区&#xff1a;3区 出版方式&#xff1a;订阅模式/开放出版 版面费&#xff1a;选择开放出版需支付$2310 三、期刊征稿范围 I…

WorkPlus im(即时通讯)集成平台助力政企数字化转型升级

随着互联网技术的不断发展&#xff0c;企业内部通讯软件已经成为企业日常运营中不可或缺的一部分。企业IM&#xff08;即时通讯&#xff09;和移动门户作为企业内部通讯软件的关键组成部分&#xff0c;为企业提供更加高效、便捷的通讯方式&#xff0c;提高了企业的运营效率。 针…