UAT_excelParser.py 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. # -*- coding:utf-8 -*-
  2. from UAT_log import info,debug,error
  3. from UAT_tree import FirstLevel,NLevel,DialogLevel,UATTree
  4. import os, sys, time
  5. import xlrd# 字典不排序;
  6. import json
  7. DEBUG = True
  8. INFO = True
  9. ERROR = True
  10. class UATExcelParser():
  11. cls = "UATExcelParser"
  12. def __init__(self, uiTree):
  13. self.levelList=[]
  14. self.uiTree = uiTree
  15. self.eventKeyCode = {}
  16. def read_excel(self, path=None):
  17. debug(self.cls, "read_excel", "path:"+path, DEBUG)
  18. if path is not None:
  19. if type(path) == str:
  20. path = path.decode('utf-8')
  21. self.xls_path = path
  22. # 打开文件;
  23. wb = xlrd.open_workbook(filename=self.xls_path)
  24. if wb is None:
  25. error(self.cls, "read_excel","文件打开失败!"+path, ERROR)
  26. return
  27. # 获取所有sheet;
  28. sheet = None
  29. self.levelList = wb.sheet_names()
  30. if "dialog" in self.levelList:
  31. sheet = wb.sheet_by_name("dialog")
  32. self.parse_excel(sheet, False)
  33. self.levelList.remove("dialog")
  34. for sh_name in self.levelList:
  35. debug(self.cls, "read_excel", "sheet_name="+sh_name, DEBUG)
  36. sheet = wb.sheet_by_name(sh_name)
  37. self.parse_excel(sheet, False)
  38. # self.uiTree.printTree()
  39. def read_keyCode(self, path):
  40. if path is None:
  41. info(self.cls, "read_excel_keyCode", "未读取到相关的keyCode文件,以默认eventKey为准", INFO)
  42. return
  43. debug(self.cls, "read_excel_keyCode", "keycode_path:"+path, DEBUG)
  44. # 打开文件;
  45. path = path.decode('utf-8')
  46. wb = xlrd.open_workbook(filename=path)
  47. sheet = wb.sheet_by_index(0)
  48. self.parse_keyCode(sheet)
  49. "根据level sheet名字,确定在第几层"
  50. def getLevelNO(self, levelSheet):
  51. return self.levelList.index(levelSheet)
  52. # endfun
  53. def parse_excel(self, sheet, bpath=True):
  54. parentName = ""
  55. if u"first" == sheet.name.lower():
  56. for i in range(1, sheet.nrows):
  57. # 获取每行内容;
  58. oneRow = tuple(sheet.row_values(i))
  59. parentName = self.parseFLevelRow(oneRow, sheet.name, parentName)
  60. elif u"dialog" == sheet.name.lower():
  61. for i in range(1, sheet.nrows):
  62. # 获取每行内容;
  63. oneRow = tuple(sheet.row_values(i))
  64. parentName = self.parseDLevelRow(oneRow, parentName)
  65. else: # 路径;
  66. for i in range(1, sheet.nrows):
  67. # 获取每行内容;
  68. oneRow = tuple(sheet.row_values(i))
  69. parentName = self.parseNLevelRow(oneRow, sheet.name, parentName)
  70. # endfun
  71. def parse_keyCode(self, sheet):
  72. for i in range(1, sheet.nrows):
  73. # 获取每行内容;
  74. oneRow = tuple(sheet.row_values(i))
  75. name = oneRow[0].upper()
  76. code = int(oneRow[1])
  77. self.eventKeyCode[name] = code
  78. #endfun
  79. def parseFLevelRow(self,oneRow, level, parentName):
  80. # debug(self.cls, "parseFLevelRow", "level:%s, parentName:%s"%(level, parentName), DEBUG)
  81. pn = oneRow[FirstLevel.ParentCol]
  82. if pn.__len__() > 0:
  83. self.uiTree.addParent(level.lower(), pn.lower(),
  84. oneRow[FirstLevel.ShortCutKeyCol],
  85. oneRow[FirstLevel.UIViewCol],
  86. oneRow[FirstLevel.MoveKeyCol],
  87. oneRow[FirstLevel.ToParentKeyCol],
  88. oneRow[FirstLevel.LayoutCol],
  89. oneRow[FirstLevel.OthersCol])
  90. return pn
  91. oname = oneRow[FirstLevel.OptionCol]
  92. if oname.__len__() > 0:
  93. self.uiTree.addOption(level.lower(), parentName.lower(), oname.lower(),
  94. oneRow[FirstLevel.OptionViewCol],
  95. oneRow[FirstLevel.FocusSelectCol],
  96. oneRow[FirstLevel.FocuseViewCol],
  97. oneRow[FirstLevel.EnterKeyCol],
  98. oneRow[FirstLevel.TextValueCol],
  99. oneRow[FirstLevel.InfoViewCol])
  100. return parentName
  101. def parseNLevelRow(self,oneRow, level, parentName):
  102. # debug(self.cls, "parseFLevelRow", "level:%s, parentName:%s"%(level, parentName), DEBUG)
  103. pn = oneRow[NLevel.ParentCol]
  104. if pn.__len__() > 0:
  105. self.uiTree.addParent(level.lower(), pn.lower(), "",
  106. oneRow[NLevel.UIViewCol],
  107. oneRow[NLevel.MoveKeyCol],
  108. oneRow[NLevel.ToParentKeyCol],
  109. oneRow[NLevel.LayoutCol],
  110. oneRow[NLevel.OthersCol])
  111. return pn
  112. oname = oneRow[NLevel.OptionCol]
  113. if oname.__len__() > 0:
  114. self.uiTree.addOption(level.lower(), parentName.lower(), oname.lower(),
  115. oneRow[NLevel.OptionViewCol],
  116. oneRow[NLevel.FocusSelectCol],
  117. oneRow[NLevel.FocuseViewCol],
  118. oneRow[NLevel.EnterKeyCol],
  119. oneRow[NLevel.TextValueCol],
  120. oneRow[NLevel.InfoViewCol])
  121. return parentName
  122. # 添加dialog
  123. def parseDLevelRow(self, oneRow, parentName):
  124. # debug(self.cls, "parseDLevelRow", "level:%s, parentName:%s"%(level, parentName), DEBUG)
  125. pn = oneRow[DialogLevel.DialogCol]
  126. if pn.__len__() > 0:
  127. self.uiTree.addDialog(pn.lower(), "",
  128. oneRow[DialogLevel.UIViewCol],
  129. oneRow[DialogLevel.MoveKeyCol],
  130. oneRow[DialogLevel.ToParentKeyCol],
  131. oneRow[DialogLevel.LayoutCol],
  132. oneRow[DialogLevel.OthersCol])
  133. return pn
  134. oname = oneRow[DialogLevel.OptionCol]
  135. if oname.__len__() > 0:
  136. self.uiTree.addDialogOption(parentName.lower(), oname.lower(),
  137. oneRow[DialogLevel.OptionViewCol],
  138. oneRow[DialogLevel.FocusSelectCol],
  139. oneRow[DialogLevel.FocuseViewCol],
  140. oneRow[DialogLevel.EnterKeyCol],
  141. oneRow[DialogLevel.TextValueCol],
  142. oneRow[DialogLevel.InfoViewCol])
  143. return parentName
  144. def parseParentDialog(self):
  145. self.uiTree.parseDialogParam()