excelToJson_server.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #!/usr/bin/env python
  2. # coding: utf-8
  3. import os.path
  4. import sys
  5. import codecs
  6. import shutil
  7. from util import *
  8. excelDir = "./策划脚本".decode('utf-8')
  9. jsonDir = "./json"
  10. g_objName=""
  11. def table2json(table, jsonfilename):
  12. nrows = table.nrows
  13. ncols = table.ncols
  14. if nrows < 3:
  15. return
  16. f = codecs.open(jsonfilename,"w","utf-8")
  17. f.write(u"[\n")
  18. for r in range(nrows):
  19. # if r == 2:
  20. # continue
  21. f.write(u"\t[ ")
  22. begin = False
  23. for c in range(ncols):
  24. strCellValue = u""
  25. objName = str(table.cell_value(1,c))
  26. global g_objName
  27. g_objName= objName
  28. objType = str(table.cell_value(2,c))
  29. objStr = table.cell_value(r,c)
  30. if(objName.find("@") >= 0 or objName.find("_") == 0):
  31. continue
  32. if(objName == ""):
  33. continue
  34. if begin:
  35. f.write(u", ")
  36. begin=True
  37. if r <= 2:
  38. strCellValue = u"\"" + objStr + u"\""
  39. else:
  40. if cmp(objType, "NUMBER") == 0:
  41. strCellValue = NumberToString(objStr)
  42. if strCellValue == False:
  43. print u"错误位置\t"+str(r+1)+":"+str(table.cell_value(r,1))+"\t"+int2index(c)+":"+str(table.cell_value(0,c))
  44. os.system("pause")
  45. elif cmp(objType, "FLOAT") == 0:
  46. strCellValue = FloatToString(objStr)
  47. if strCellValue == False:
  48. print u"错误位置\t"+str(r+1)+":"+str(table.cell_value(r,1))+"\t"+int2index(c)+":"+str(table.cell_value(0,c))
  49. os.system("pause")
  50. else:
  51. strvalue = StringToString(objStr).strip();
  52. strvalue = "".join(strvalue.split("\n"))
  53. strCellValue = u"\"" + strvalue.replace("\\", "\\\\") + u"\""
  54. f.write(strCellValue)
  55. f.write(u" ]")
  56. if r <= 1 or (r == 2 and nrows > 3) or (r > 2 and r < nrows-1):
  57. f.write(u",")
  58. f.write(u"\n")
  59. f.write(u"]")
  60. f.close()
  61. print "Create ",jsonfilename," OK"
  62. return
  63. def excelToJson(excelFileName,lgFile):
  64. print 'begin trans excel:' + excelFileName
  65. lgFile.write('Excel dir:' + excelFileName)
  66. lgFile.write(u"\r\n")
  67. names = excelFileName.split('\\')
  68. xlsName = names[len(names) - 1].split(".")[0]
  69. if len(names) > 2 :
  70. xlsName = names[len(names) - 2] + "\\" + xlsName
  71. childDir = os.path.join(jsonDir, xlsName)
  72. if not os.path.exists(childDir) :
  73. os.makedirs(childDir)
  74. data = openxml(excelFileName)
  75. for table in data:
  76. print "sheet : " + table.name
  77. lgFile.write('\t'+'sheetCO : ' + table.name)
  78. lgFile.write(u"\r\n")
  79. if (not table.name.lower().startswith('config')) and (not table.name.lower().startswith('sheet')) and (not table.name.lower().startswith('remark')) and (not table.name.lower().startswith('(')):
  80. destfilename = os.path.join(jsonDir, xlsName + "\\" + table.name + ".json")
  81. try:
  82. table2json(table,destfilename)
  83. except Exception,e:
  84. print Exception,":",e
  85. os.system('pause')
  86. print "All OK"
  87. if __name__ == '__main__':
  88. reload(sys)
  89. sys.setdefaultencoding( "utf-8" )
  90. if os.path.isdir(jsonDir):
  91. shutil.rmtree(jsonDir)
  92. os.mkdir(jsonDir)
  93. print excelDir
  94. try:
  95. lgFile = codecs.open('excelToJson.txt',"w","utf-8")
  96. for parent,dirnames,filenames in os.walk(excelDir):
  97. for filename in filenames:
  98. if not filename.startswith("~$") and not filename.startswith("$") and not parent.endswith("clientConfig"):
  99. sufix = os.path.splitext(filename)[1][1:]
  100. # print('sufix:' + sufix);
  101. if sufix == 'xml':
  102. print 'filename : ' + filename
  103. excelFileName = os.path.join(parent, filename)
  104. excelToJson(excelFileName,lgFile)
  105. lgFile.write('==========================All OK==================')
  106. lgFile.close()
  107. except Exception,e:
  108. print Exception,":",e
  109. # os.system('pause')