# -*- coding: utf-8 -*- from ExcelToXml import ExcelToXml import sys import os # 定义后缀过滤列表 filter_list = ['.xls'] # 说明:检查output文件夹是否存在,不存在则创建 # 参数:无 # 返回值:输出路径 def get_output_dir(): output = os.path.join(os.getcwd(), 'output') if not os.path.exists(output): os.mkdir(output) return output # 说明:遍历指定文件夹扫描Excel文件 # 参数:无 # 返回值:输出文件夹下所有文件路径列表 def get_input_excel(input_dir): files = [] # input文件夹不存在 if not os.path.exists(input_dir): return files else: # 遍历该目录下所有文件 for _, _, file_list in os.walk(input_dir): for filename in file_list: file_path = os.path.join(input_dir, filename) # 获取文件后缀 ext = os.path.splitext(file_path)[1] # 满足要求的则放入 if ext in filter_list: files.append(file_path) return files # 将命令行参数转换为对应的文件输入 def get_command(): excels = [] input_dir = '' # 未传入参数,使用默认设置 if len(sys.argv) == 1: input_dir = os.path.join(os.getcwd(), 'input') excels = get_input_excel(input_dir) elif len(sys.argv) == 2: # 传入了参数 input_dir = sys.argv[1] # 如果传入的是单个文件 if os.path.isfile(input_dir): ext = os.path.splitext(input_dir)[1] # 判断是否是Excel if ext not in filter_list: print('ERROR:请传入正确的Excel文件') return False excels.append(input_dir) elif os.path.exists(input_dir): # 如果是文件夹 excels = get_input_excel(input_dir) return excels, input_dir # 说明:将指定Excel转换为TestLink使用的xml文件 # 参数:无 # 返回值:成功返回True def converter(): # 获取命令行参数 excels, input_dir = get_command() # 校验文件输入 if len(excels) == 0: print('ERROR: 未发现输入的Excel文件') return False print('--------------------------------') print('INFO: 当前输入文件为:', input_dir) output = get_output_dir() # 遍历文件输出 print('INFO: 开始执行Excel转xml...') print('--------------------------------') for excel in excels: # 文件名 _, filename = os.path.split(excel) # 实例化对象 xm = ExcelToXml(excel) if not xm.create_tree(): print(u'ERROR: [{}]转换发生错误'.format(filename)) print('------------------------') continue # 写入xml文件 xm.write_xml(output) result = xm.get_result() print('[{}]转换成功!'.format(filename)) print('Sheet总数为:\t', result[0]) print('模块总数为:\t', result[1]) print('案例总数为:\t', result[2]) print('------------------------') print('INFO: 全部转换成功,已输出到文件夹:', output) return True if __name__ == "__main__": # 开始转换 converter()