-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathGenVue.py
110 lines (102 loc) · 3.82 KB
/
GenVue.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
from Library.ReadXls import ReadXls
from Library.SqlSyntax import SqlSyntax
from Library.VueHandler import VueHandler
import os
from itertools import groupby
from collections import namedtuple
xlsObj = ReadXls(filename = 'templates/PurchaseOrder.xlsx')
def deleteFile(fileName):
"""刪除已經存在的codegen檔"""
if os.path.exists(fileName):
os.remove(fileName)
else:
print("The file does not exist")
def GenVue(boxs,templateName = "VueTemplate.mako"):
"""產生Vue檔"""
vueObj = VueHandler(Boxs = boxs)
vueObj.GetVueFile(templateName)
fileName = "/home/pi/WorkSpace/TestBoostrap3/src/pages/CodeGen.vue"
vueObj.Save(fileName)
def IterSheets(sheetNames):
"""逐個Sheet產生Vue檔內容"""
boxs = list()
for sheetName in sheetNames:
#取得欄位名稱
titles = xlsObj.fieldTitle(sheetName,1)
print(f'資料表名稱:{sheetName}')
print(f'欄位名稱:{titles}')
#取得資料列內容
Rows = xlsObj.GetRows(sheetName,titles,2)
# Group By 列號 Field
Rows.sort(key=lambda d : d.列號)
mapRows = [(key, list(groups)) for key, groups in groupby(Rows, lambda d : d.列號)]
Box = namedtuple('Box', ['BoxName', 'Datas'])
box = Box(sheetName,mapRows)
boxs.append(box)
for item in mapRows:
print(item[0])
print(item[1])
for gitem in item[1]:
print(gitem.寬度)
print('-----')
return boxs
def GenJson(sheetNames):
jsonStr = '{'
for sheetName in (sheetName for sheetName in sheetNames if 'table_' not in sheetName):
#取得欄位表頭名稱
titles = xlsObj.fieldTitle(sheetName,1)
#取得資料列內容
Rows = xlsObj.GetRows(sheetName,titles,2)
for fields in Rows:
jsonStr += f'"{fields.欄位名稱}":"",'
print(f'欄位名稱:{fields.欄位名稱}')
jsonStr = jsonStr[0:len(jsonStr) - 1]
jsonStr += '}'
print(jsonStr)
fileName = "/home/pi/WorkSpace/TestBoostrap3/src/data/codegen.json"
f = open(fileName,'w')
f.write(jsonStr)
def GenTableJson(sheetNames):
jsonStr = '{'
for sheetName in (sheetName for sheetName in sheetNames if 'table_' in sheetName):
#取得欄位表頭名稱
titles = xlsObj.fieldTitle(sheetName,1)
#取得資料列內容
Rows = xlsObj.GetRows(sheetName,titles,2)
# Group By 列號 Field
Rows.sort(key=lambda d : d.列號)
mapRows = [(key, list(groups)) for key, groups in groupby(Rows, lambda d : d.列號)]
for fields in mapRows:
if fields[0] == 1 or fields[0] == 2:
for field in fields[1]:
jsonStr += f'"{field.欄位名稱}":"",'
print(f'欄位名稱:{field.欄位名稱}')
else:
jsonStr += '"subDatas":[{'
for field in fields[1]:
jsonStr += f'"{field.欄位名稱}":"",'
print(f'欄位名稱:{field.欄位名稱}')
jsonStr = jsonStr[0:len(jsonStr) - 1]
jsonStr += '}]'
jsonStr += ',"isdelete": 0,"isDetailOpen": true,"isSubOpen":false'
jsonStr += '}'
print(jsonStr)
fileName = "/home/pi/WorkSpace/TestBoostrap3/src/data/codegentable.json"
f = open(fileName,'w')
f.write(jsonStr)
def prevGenVue():
"""產生Vue檔的前置處理"""
fileName = "/home/pi/WorkSpace/TestBoostrap3/src/pages/CodeGen.vue"
deleteFile(fileName)
sheetNames = xlsObj.getSheetNames(NotIn = ['Index'])
boxs = IterSheets(sheetNames)
#產生vue檔案
GenVue(boxs)
def Main():
prevGenVue()
#產生Json file
sheetNames = xlsObj.getSheetNames(NotIn = ['Index'])
GenJson(sheetNames)
GenTableJson(sheetNames)
if __name__ == '__main__':
Main()