lucky邪神 发表于 2020-4-4 12:04:46

对测试数据的自动整理出报告

最近老是整报告,搞了个半自动出报告的玩意。本来想用pack,还是搞得不清楚最后还是选择grid,相对简单点

"""
1.选择文件夹,获取文件夹中的txt文件
2.读取txt文件的内容(addr,addr2(hex),description,value)
3.上一步获取的txt文件内容的value值实际是十六进制
4.选择要使用的文件
5.选择报告模板(*.xlsx),并将第四步选择的文件的value值以0x00的格式保存到报告模板
"""
import tkinter as tk
from tkinter import filedialog
import os
import openpyxl

transresult={}

def filedirselect():
    global filenamelist
    global filedir
    filedir = filedialog.askdirectory()#选择数据位置
   
    filenamelist=
    #filenamelist= os.listdir(filedir)
    print(filenamelist)
   
    if filedir != "":
      entry1.delete(0,'end')
    entry1.insert(0,filedir)
   
    pass

def fileanalyse():#分析测试数据
    filenum=len(filenamelist)
    if entry2.get() !="":
      entry2.delete(0,'end')
    entry2.insert(0,filenamelist)
   
    for i in range(filenum):
      filename =filedir+'/'+filenamelist
      transresult]=filetrans(filename)    #页名做键,页的registervalue列表做值 字典
      
    pass
def filetrans(filename):    #对测试的txt数据进行转换
    registervalue=[]
    file=open(filename,'r')
    for each_line in file:
      each_linelist=each_line[:-1].split('\t')
      registervalue.append('0x'+each_linelist[-1])
    file.clegisee()
    return registervalue
    pass
def modefileselect():
    file=filedialog.askopenfilename()
    if entry4.get() !='' and file !='':
      entry4.delete(0,'end')
    entry4.insert(0,file)
    pass

def writereport():
    reportname=entry4.get()   #获取报告模板位置和名称
    pagenamelist=entry3.get().split(',')    #获取需要处理的page列表
    numofpage=len(pagenamelist)

    wb=openpyxl.load_workbook(reportname)   #打开报告模板文件,为下一步的写入做准备
    for each in pagelist:
      wsheet=wb.get_sheet_by_name(each)   #打开要处理的page
      i=2
      while i<130:    #更新报告中对应sheet中C列的值
            wsheet['C'+str(i)].value=transresullt
            i +=1
    wb.save(reportname)   
      
    pass

root= tk.Tk(className='Code Validation trans')
root.geometry("550x250+200+150")

label1= tk.Label(root,text='数据位置',width=6)
label1.grid(row=0,rowspan=1,column=1,padx=10,pady=15)
#label1.pack(side='left',padx=10,pady=1)

entry1=tk.Entry(root,width=36,font=6)
entry1.grid(row=0,column=2,columnspan=3,padx=10,pady=15,sticky='n')
#entry1.pack(side='left',padx=10,pady=1)

button1=tk.Button(root,text='浏览...',command=filedirselect,width=6)
button1.grid(row=0,column=5,columnspan=1,padx=10,pady=15)
#button1.pack(side='left',padx=10,pady=1)

button2=tk.Button(root,text='数据解析',command=fileanalyse,width=6)
button2.grid(row=0,column=6,columnspan=1,padx=10,pady=15)
#button2.pack(side='left',padx=10,pady=1)

label2= tk.Label(root,text='text文件',width=6)
label2.grid(row=1,rowspan=1,column=1,padx=10,pady=15)
#label2.pack(side='top',padx=10,pady=1)

entry2=tk.Entry(root,width=60)
entry2.grid(row=1,column=2,columnspan=5,padx=10,pady=15,sticky='n')
#entry2.pack(side='bottom',padx=10,pady=1)

label3= tk.Label(root,text='选择text',width=6)
label3.grid(row=2,rowspan=1,column=1,padx=10,pady=15)
#label2.pack(side='top',padx=10,pady=1)

entry3=tk.Entry(root,width=60)
entry3.grid(row=2,column=2,columnspan=5,padx=10,pady=15,sticky='n')
#entry2.pack(side='bottom',padx=10,pady=1)

label2= tk.Label(root,text='选择模板',width=6)
label2.grid(row=4,rowspan=1,column=1,padx=10,pady=15)
#label1.pack(side='left',padx=10,pady=1)

entry4=tk.Entry(root,width=36)
entry4.grid(row=4,column=2,columnspan=3,padx=10,pady=15,sticky='n')
#entry1.pack(side='left',padx=10,pady=1)

button3=tk.Button(root,text='浏览...',command=modefileselect,width=6)
button3.grid(row=4,column=5,columnspan=1,padx=10,pady=15)
#button1.pack(side='left',padx=10,pady=1)

button4=tk.Button(root,text='确定',command=writereport,width=6)
button4.grid(row=4,column=6,columnspan=1,padx=10,pady=15)
#button2.pack(side='left',padx=10,pady=1)
页: [1]
查看完整版本: 对测试数据的自动整理出报告