首页 > 编程知识 正文

java生成pdf表格,tkinter显示print内容

时间:2023-05-05 14:45:37 阅读:284302 作者:3657

需求:

     因为公司使用的是testlink,将用例从库中导出时,是excel格式,所以大家有需求将xml格式用例转换成excel格式

实现思路:

   1.解析xml格式,将testcase、steps、step,用例步骤、预计结果提取出来

   2. 将文件写入到excel中

   3.通过tkinter库,获取文件路径与名称

   4.使用pyinstaller打包成exe文件,用户可以直接使用

实现代码

# coding:utf-8import xml.dom.minidomfrom xml.dom.minidom import Documentimport reimport xlwtfrom tkinter import filedialogfrom tkinter import *import tkinter# 生成界面框win = tkinter.Tk()win.title("生成用例excel")win.geometry("500x400+120+50")# 获取xml文件路径def getCliPath(): FilePath = filedialog.askopenfilename() xmlPath.set(FilePath)# 界面按钮布局,获取xml路径的按钮xmlPath = tkinter.StringVar()button = tkinter.Button(win, text="点击按钮获取xml路径", command=getCliPath)button.pack()button.place(x=20, y=30)# 文件路径extry = tkinter.Entry(win, font=('微软雅黑', 12), textvariable=xmlPath)extry.place(x=200, y=30)# 设置k的值,后面写入是着行递增def func(): # 读取xml文件 FilePath = extry.get() dom = xml.dom.minidom.parse(FilePath) xml_name = FilePath.split('/')[-1].split('.')[0] # 写入excel中 workbook = xlwt.Workbook(encoding="utf-8") # 创建sheet名称 booksheet = workbook.add_sheet(xml_name) # 设置excel宽度 booksheet.col(0).width = 5120 booksheet.col(1).width = 5120 booksheet.col(2).width = 5120 booksheet.col(3).width = 5120 booksheet.col(4).width = 5120 booksheet.col(5).width = 5120 borders = xlwt.Borders() borders.left = 1 borders.right = 1 borders.top = 1 borders.bottom = 1 # 设置头部文件字体格式等 title = xlwt.easyxf( u'font:name 仿宋,height 240 ,colour_index black, bold on, italic off; align: wrap on, vert centre, horiz center;pattern: pattern solid, fore_colour light_orange;') # 设置写入文件的格式 style = xlwt.easyxf('align: wrap on,vert centre, horiz center') # 设置excel字段 item = '用例集' Subitem = '主题' CaseTitle = '描述' Condition = '前置条件' actions = '操作步骤' data = '操作步骤' Result = '预期结果' ExternalId = 'ExternalId' booksheet.write(0, 0, item, title) booksheet.write(0, 1, Subitem, title) booksheet.write(0, 2, CaseTitle, title) booksheet.write(0, 3, Condition, title) booksheet.write(0, 4, actions, title) booksheet.write(0, 5, data, title) booksheet.write(0, 6, Result, title) booksheet.write(0, 7, ExternalId, title) testcases_tag = dom.getElementsByTagName('testcases') testcase_tag_ = testcases_tag[0].getElementsByTagName('testcase') k = 0 for j in range(len(testcase_tag_)): step_tag_ = testcases_tag[0].getElementsByTagName('testcase')[j].getElementsByTagName('steps')[0].getElementsByTagName('step') print(step_tag_) for i in range(len(step_tag_)): # k的值向上递增 k = k + 1 # 获取用例主题 testcase_tag_name = testcases_tag[0].getElementsByTagName('testcase')[j].getAttribute('name') # 写入excel中 booksheet.write(k, 1, testcase_tag_name, style) # 获取操作步骤 step_number = testcases_tag[0].getElementsByTagName('testcase')[j].getElementsByTagName('steps')[ 0].getElementsByTagName( 'step')[ i].getElementsByTagName('step_number')[0].firstChild.data # 进行替换 step_number = re.sub(r'<(p|br|/p|br/)*>', '', step_number) # 获取用例步骤 step = testcases_tag[0].getElementsByTagName('testcase')[j].getElementsByTagName('steps')[0].getElementsByTagName('step')[i].getElementsByTagName('actions')[0].firstChild.data step = re.sub(r'<(p|br|/p|br/)*>', '', step) # 将得到文件写入excel中 booksheet.write(k, 4, step, style) booksheet.write(k, 0, '功能测试用例集', style) # 获取用例运行结果 expectedresults = testcases_tag[0].getElementsByTagName('testcase')[j].getElementsByTagName('steps')[0].getElementsByTagName('step')[i].getElementsByTagName('expectedresults')[0].firstChild.data expectedresults = re.sub(r'<(p|br|/p|br/)*>', '', expectedresults) booksheet.write(k, 6, expectedresults, style) # 获取extendId值 execution_type = testcases_tag[0].getElementsByTagName('testcase')[j].getElementsByTagName('steps')[0].getElementsByTagName('step')[0].getElementsByTagName('execution_type')[0].firstChild.data execution_type = re.sub(r'<(p|br|/p|br/)*>', '', execution_type) # 将文件写入至excel booksheet.write(k, 7, execution_type) # 保存至本地 workbook.save('{}.xls'.format(xml_name))# 设置button按钮button = tkinter.Button( win, text="生成用例excel", command=func)button.pack()button.place(x=200, y=200)win.mainloop()

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。