Python——读写Excel,解析xml
操作Excel
xlwt:⽤来写Excel
xlrd:⽤来读Excel
操作xml
解析xml的⽅式:
saxSAX 是⼀种基于事件驱动的API。
利⽤ SAX 解析 XML ⽂档牵涉到两个部分: 解析器和事件处理器。
解析器负责读取 XML ⽂档,并向事件处理器发送事件,如元素开始跟元素结束事件。
⽽事件处理器则负责对事件作出响应,对传递的 XML 数据进⾏处理
dom:⼀个 DOM 的解析器在解析⼀个 XML ⽂档时,⼀次性读取整个⽂档,把⽂档中所有元素保存在内
存中的⼀个树结构⾥,之后你可以利⽤DOM 提供的不同的函数来读取或修改⽂档的内容和结构,也可以把修改过的内容写⼊xml⽂件。
附上两个详解地址
xml样例
<config>
<Property>
<Name>编号</Name>
<stdTableName>YWST..T_GX_AJ</stdTableName>
<stdFieldName>C_BH</stdFieldName>
<stdType>C</stdType>
<XMLNode/>
<TranslateType>VirtualNUM</TranslateType>
<TranslateCondition><![CDATA[]]></TranslateCondition>
<Version>1</Version>
</Property>
<Property>
<Name>标识</Name>
<stdTableName>YWST..T_GX_AJ</stdTableName>
<stdFieldName>N_AJBS</stdFieldName>
<stdType>N</stdType>
<XMLNode>标识</XMLNode>
<TranslateType>DEFAULT</TranslateType>
<TranslateCondition><![CDATA[]]></TranslateCondition>
<Version>1</Version>
</Property>
<Property>
<Name>名称</Name>
<stdTableName>YWST..T_GX_AJ</stdTableName>
<stdFieldName>C_AJMC</stdFieldName>
<stdType>VC</stdType>
<XMLNode>名称</XMLNode>
<TranslateType>DEFAULT</TranslateType>
<TranslateCondition><![CDATA[]]></TranslateCondition>
<Version>1</Version>
</Property>
</config>
python怎么读入excelpython代码
#!/usr/bin/python
import xlrd
import xlwt
import os
from xml.dom.minidom import parse
import xml.dom.minidom
# xlrd 主要⽤来读Excel
# xlwt 主要⽤来写Excel
# ⽤dom来解析xml
def zdfgsl(path, smdPath, xmlPath):
smd = os.listdir(smdPath)
xml1 = os.listdir(xmlPath)
workbook = xlwt.Workbook()
sheet = workbook.add_sheet(u'字段覆盖率', cell_overwrite_ok=True) smdSet = set()
r=0
c=0
for s in smd:
sname = s
for x in xml1:
xname = x
count = 0
if x.split('.')[0].__eq__(s.split('⽂件')[0]):
print(s + "————————" + x)
smdFile = xlrd.open_workbook(smdPath + '//' + sname)
smdSheet = smdFile.sheet_by_name('COL')
for i in range(15, ws):
ll_value(i, 0).__eq__('----'):
pre = ll_value(i, 1)
continue
smdSet.add(pre +'\\'+ ll_value(i, 2))
ll_value(i, 0).__eq__('<<<<'):
break
DOMTree = xml.dom.minidom.parse(xmlPath + '//' + xname) elobj = DOMTree.documentElement
pro = ElementsByTagName('XMLNode')
for j in range(len(pro)):
if (pro[j].firstChild!=None):
if(pro[j].firstChild.data in smdSet):
count += 1
fgl=count/smdSet.__len__()
sheet.write(r,c,x.split('.')[0])
sheet.write(r,c+1,fgl)
r+=1
workbook.save(path)
def main():
path = r'C://Users//⽂浩.000//Desktop//字段覆盖梳理v2.1.6-patch6.xls' smdPath = r'C://Users//⽂浩.000//Desktop//smd'
xmlPath = 'E://IDEA//export15xml//src//config//tabledesc//np'
zdfgsl(path, smdPath, xmlPath)
main()
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论