-
Notifications
You must be signed in to change notification settings - Fork 6
/
pubtool.py
110 lines (91 loc) · 3.47 KB
/
pubtool.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
# -*- coding: utf8 -*-
__author__ = 'mzh'
try:
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET
#读取xml文件,将文件转为一个列表,每一条数据是一个map。
def readXml(filePath):
tree = ET.ElementTree(file=filePath)
retList = []
for singleTemplate in tree.getroot():
tMap = {}
for child in singleTemplate:
if child.tag == 'sheetname':
tMap['sheetname'] = child.text
elif child.tag == 'ascolumnname':
tMap['ascolumnname'] = child.text
elif child.tag == 'count':
tMap['count'] = child.text
elif child.tag == 'sum':
strTemp = []
for temp in child:
strTemp.append(temp.text)
tMap['sum'] = strTemp
elif child.tag == 'groupby':
strTemp = []
for temp in child:
strTemp.append(temp.text)
tMap['groupby'] = strTemp
elif child.tag == 'where':
tMap['where'] = child[0].text
elif child.tag == 'coefficient':
tMap['coefficient'] = child.text
elif child.tag == 'state':
tMap['state'] = child.text
retList.append(tMap)
return retList
def readCoefficientFromXml(filePath=None):
tree = ET.ElementTree(file=filePath)
retMap = {}
for co in tree.getroot():
name = co.find('name').text
value = co.find('value').text
retMap[name] = value
return retMap
def writeXml(filePath, billModel, headList):
insertLines = []
rowCount = billModel.rowCount()
columnCount = billModel.columnCount()
for i in range(rowCount):
tempModelIndex = billModel.index(i, 7)
state = tempModelIndex.data().toInt()
if state[1] and state[0] == 1:
tMap = {}
for j in range(columnCount-1):
tmi = billModel.index(i, j)
tvalue = tmi.data().toString().__str__()
tMap[headList[j]] = tvalue
tMap['state'] = '0'
insertLines.append(tMap)
#检查是否有数据需要插入
needInsertLength = len(insertLines)
if needInsertLength <=0:
return
tree = ET.ElementTree(file=filePath)
root = tree.getroot()
for tempMap in insertLines:
attrMap = {'index': '3'}
newTemplate = ET.Element('template', attrMap)
for key in tempMap:
if key == 'where':
newItem = ET.Element(key)
childItem = ET.Element('wh', {'index': '88'})
childItem.text = tempMap[key]
newItem.append(childItem)
elif key == 'groupby':
newItem = ET.Element(key)
childItem = ET.Element('gr', {'index': '88'})
childItem.text = tempMap[key]
newItem.append(childItem)
elif key == 'sum':
newItem = ET.Element(key)
childItem = ET.Element('su', {'index': '88'})
childItem.text = tempMap[key]
newItem.append(childItem)
else:
newItem = ET.Element(key)
newItem.text = tempMap[key]
newTemplate.append(newItem)
root.append(newTemplate)
tree.write(filePath, 'utf-8')