Python3实现转xmind思维导图文件到excel

本文介绍了一款用于将XMind思维导图自动转换为Excel表格的Python工具,旨在帮助测试工程师快速整理测试用例,支持合并单元格及枢纽布局两种格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

在一些快速迭代的团队中,测试工程师没有时间整理完整的测试用例,或者没有专门的测试用例管理工具(比如testlink,禅道,JIRA等),一些测试工程师会使用xmind的思维导图来记录测试用例。这种方式虽然可以很清晰的看到测试点,但是弊端就是不方便标记结果。
我就在团队中遇到了使用xmind来记录测试用例的情况,在执行这些用例的时候就想要转成excel,方便在测试过程中随时标记结果,生成测试报告。
但是,xmind转excel需要会员,那对于我这种本不富裕的测试同学来说,就只好自力更生,自己转。

xmind转换效果

xmind文件

在这里插入图片描述

Excel文件

支持一下两种格式,默认使用格式一。

格式一:合并单元格布局

在这里插入图片描述

格式二:枢纽布局

在这里插入图片描述

代码实现

暂时只支持一个画布上一个父主题的情况,xmind中的notecallout等暂时不支持,会不写入excel中。以下代码转xmind到excel时会按照合并单元格的样式展示。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from xmindparser import xmind_to_dict
from openpyxl import Workbook, load_workbook
from openpyxl.styles import Alignment


def write_sub_note_to_excel(datadict, cur='', excel=None):
    '''
    把每个最终节点,带路径写入excel
    :param datadict:
    :param cur:
    :param excel:
    :return:
    '''
    for k, v in datadict.items():
        if type(v) is dict:
            write_sub_note_to_excel(v, cur, excel)
        elif isinstance(v, list):
            for i in v:
                if isinstance(i, dict):
                    write_sub_note_to_excel(i, cur, excel)
        else:
            if not 'topics' in datadict and k == 'title':
                wb = load_workbook(excel)
                ws = wb.active
                ws.append((cur + '-' + v).split('-')[1:])
                wb.save(excel)
                print("{0} : {1}".format(k, cur + '-' + v))
            cur = cur + '-' + v


def format_excel(excelfile):
    '''
    调整excel格式,做合并单元格
    :param excelfile:
    :return:
    '''
    wb = load_workbook(excelfile)
    ws = wb.active
    for cols in ws.iter_cols(max_row=ws.max_row, max_col=ws.max_column):
        srow = cols[0]
        for col in cols[1:]:
            if col.value == srow.value:
                if col == cols[ws.max_row - 1] and col.value is not None:
                    ws.merge_cells(':'.join([srow.coordinate, col.coordinate]))
                    srow.alignment = Alignment(horizontal="center", vertical="center")
            else:
                if srow.value is not None:
                    # print(':'.join([srow.coordinate, col.column_letter + str(col.row - 1)]))
                    ws.merge_cells(':'.join([srow.coordinate, col.column_letter + str(col.row - 1)]))
                    srow.alignment = Alignment(horizontal="center", vertical="center")
                srow = col
    wb.save(excelfile)


if __name__ == '__main__':
    import sys
    xmind_file = sys.argv[1]  # 输入D:\XX测试用例.xmind
    xmind_dict = xmind_to_dict(xmind_file)
    print(xmind_dict)
    # 生成的excel文件名
    wb = Workbook()
    excelfile = xmind_file.replace('.xmind', '.xlsx')
    wb.save(excelfile)
    wb = load_workbook(excelfile)
    ws = wb.active
    # xmind解析后的dict格式如下:
    # [{'title': '画布 1', 'topic': {'title': 'XX测试用例', 'topics': []}}]
    # 所以需要忽略到第一层的 '画布 1',直接从topic里内容开始转
    top_topic = xmind_dict[0]['topic']
    write_sub_note_to_excel(top_topic, excel=excelfile)
    # 需要格式二:枢纽布局来逐条查阅的小伙本,直接把下面这行format_excel注释掉即可
    format_excel(excelfile)

可执行文件下载地址

给不会Python3或者不想尝试的小伙伴也准备了个可以在Windows10上运行的可执行文件。打开CMD,执行exe即可。

D:\>xmind2excel.exe XX测试用例.xmind

链接:https://pan.baidu.com/s/1HOtUcX3dr8msntEXGMe1gw
提取码:kcej

TODO

  1. 支持标注和笔记,写入excel中
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值