栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

freemind鏂囦欢鎬庝箞杞寲_利用python将freemind文件转为Excel?

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

freemind鏂囦欢鎬庝箞杞寲_利用python将freemind文件转为Excel?

freemind生成的文件扩展名为.mm,实际就是一个标准的xml文档,我们用记事本打开.mm文件,样式如下:

   因此我们可以利用python的xml库,来将这个xml文档层层解析,并写入Excel文件中。为了有一个可视化的界面,可以引入tkinter库来生成一个对话框,用来选择.mm文件和生成Excel的目录。【注意】python2和python3的tkinter库和引用方式有细微变化,暂时不兼容,本文是用python3编写。

    选文件界面样式如下:

   freemind样式如下:

    生成的Excel文件样式如下:

     全文代码如下(本人python刚入门,代码有不合理之处可以共同讨论,请见谅):

# coding : utf-8
import tkinter
import tkinter.filedialog
import os
import xml.etree.ElementTree as ET
import xlwt


# 选freemind文件
def select_file():
    global file_path
    file_path = tkinter.filedialog.askopenfilename(title='选择一个freemind文件', filetypes=[('freemind文件', '.mm')])
    return file_path


# 选Excel生成目录
def select_folder():
    global folder_path
    folder_path = tkinter.filedialog.askdirectory(title='选择一个文件夹')
    return folder_path


# 生成窗口
def create_frame():
    win = tkinter.Tk()
    win.geometry('350x130')
    win.title("选择文件目录")
    file = tkinter.Button(win, text="选择freemind文件", height=2, width=20, fg="blue", bg="gray", command=select_file)
    file.pack()
    folder = tkinter.Button(win, text="选择生成的Excel目录", height=2, width=20, fg="blue", bg="gray", command=select_folder)
    folder.pack()
    excel = tkinter.Button(win, text="生成Excel文件", height=1, width=12, bg="gray", command=win.quit)
    excel.pack()
    win.mainloop()


# 获取xml节点等级
def get_xml_level(item, func, level=0):
    global g_row
    func(item, g_row, level)

    for child in list(item):
        name = child.get('TEXT')

        get_xml_level(child, func, level + 1)
        if child.find('node') is None and name is not None:
            g_row = g_row + 1


# 写入Excel文件
def write_excel(item, row, level):
    name = item.get('TEXT')
    if name is not None:
        ws.write(row, level, name)


if __name__ == '__main__':
    g_row = 0
    file_path = ''
    folder_path = ''
    file_name = 'freemind2excel.xlsx'
    create_frame()
    print('选择的freemind文件为:' + file_path)
    tree = ET.ElementTree(file=file_path)
    root = tree.getroot()
    first_node = root.find('node')
    wb = xlwt.Workbook()  # 创建工作簿
    ws = wb.add_sheet('freemind2excel')  # 指定工作簿名称
    get_xml_level(first_node, write_excel)
    wb.save(folder_path + '/' + file_name)
    if not os.path.exists(folder_path + '/' + file_name):
        print('Excel生成失败')
    else:
        print('Excel生成成功,路径为:' + folder_path + '/' + file_name)
        print('测试用例条数为:' + str(g_row))

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/783065.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号